2011-08-27 78 views
14

我正在構建一個離線的Web應用程序,並且想要使用緩存清單。目前我的緩存清單如下:將外部文件包含在緩存清單中可以嗎?

CACHE MANIFEST 
# Change the version number below each time we update a resource. 
# Rev 1 
index.html 
photo.html 
js/photo.js 
css/photo.css 
http://code.jquery.com/jquery-1.6.1.min.js 
http://code.jquery.com/mobile/1.0b1/jquery.mobile-1.0b1.min.js 
http://code.jquery.com/mobile/1.0a4.1/jquery.mobile-1.0a4.1.min.css 
http://maps.google.com/maps/api/js?sensor=false&region=GB 

沒有任何理由不包括外部,CDN託管的jQuery,jQuery Mobile的和谷歌地圖的緩存清單文件?

我想不出一個,但我想我會問那些聰明比我:)

+0

我不認爲答案是正確的。 請參見[SO上這個的其他問題] [1] [1]:http://stackoverflow.com/questions/10795268/can-i-use-html5-cache-manifest-to- store-third-party-js – user1632306

+1

請重新檢查答案;我懷疑接受的答案是不正確的,並且引起了很多混淆。我已經提供了與來源不同的答案。 –

+0

請重新檢查有效答案 – davidtaubmann

回答

-6

你不能。緩存清單僅適用於來自同一個域的文件。如果您想要列出跨域資源,則需要從您的域代理。

+0

啊。那麼這將是一個很好的理由。謝謝。 – Richard

+5

這個答案是**錯誤**至少是圖片,但也可能是腳本(請參閱我的答案的來源)。請再次檢查並提供來源或刪除/更正答案,因爲這出現在Google搜索中,並且非常混亂。 –

+0

事實上,這是不正確的(鉻) – markmarijnissen

19

是的。實際上,你的必須在清單中包含外部圖像,或者即使網絡連接可用,一些瀏覽器也不會加載它們! (除非你提供一個網絡部分,這可能會導致圖像中獲取每一次,繞過普通瀏覽器的緩存。)

被緩存的圖像(至少是Firefox,沒有測試Chrome瀏覽器)。

spec明確地說:

離線應用程序緩存清單可以使用絕對路徑,甚至絕對URL

http://manifest-validator.com/還報告了一個清單與外部URL作爲確定。

我不是100%確定這也適用於腳本,但Firefox的快速測試看起來像腳本按預期緩存。

2

MobileSafari有一條規則,在SSL下,applicationCache中的所有路徑必須符合同源策略。 applicationCache將成功使用外部源路徑緩存,但不會在Web Inspector-> Storage-> ApplicationCache表中看到列出的資源,並且在脫機時它們將不可用。

這種行爲Apple的文檔中沒有說明,但仍是iOS的10.2明顯:https://developer.apple.com/library/content/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/OfflineApplicationCache/OfflineApplicationCache.html

+0

[W3規格](https://www.w3.org/TR/2011/WD-html5-20110525/offline。html#writing-cache-manifests):如果清單是https,所有URL必須與清單具有相同的來源 – mu3

相關問題