2012-09-06 42 views
3

我試圖創建一個清單,如:HTML5緩存清單:後備外部資源

CACHE MANIFEST 

CACHE: 
offline.jpg 
http://externalSite/cacheDemo/offline.jpg 

FALLBACK: 
/ offline.jpg 
http://externalSite/ http://externalSite/cacheDemo/offline.jpg 

,然後在我的HTML

<img src="unavailable.jpg" /> 
<img src="http://externalSite/cacheDemo/unavailable.jpg" /> 

我得到本地不可用圖像回退到工作,但沒有外部......是否可以指定外部資源的回退?無法找到有關此文件特別是...

+0

我不知道這是否適用於您的設置:「回退資源必須來自與清單文件相同的來源(即相同的協議,主機名和端口)。」 – Frederic

+1

你不可能期望這個工作。您無法爲其他人的網站**指定備用網址**。如果我可以指定** your **網站的回退,你會喜歡嗎? – meagar

回答

0

它是不幸的,它是在規範之外,我還沒有找到任何堅實的理由爲什麼。這對於任何使用CDN的人或者對於開發爲12 factor風格應用程序(例如,用於在Heroku上託管)的開發者來說都是合法的需求,其中上載的圖像不能修改本地狀態,而是需要保存到附加資源。 幸運的是,我們仍然可以在Javascript中完成我們需要的功能,但它會根據您嘗試回退的資源類型而有所不同。

對於圖像而言,可以依靠onError屬性:

<img src="http://externalSite/cacheDemo/unavailable.jpg" onError="this.onError = null; this.src='offline.jpg'" /> 

請注意,我們殲滅的onError防止無限循環,如果後備圖像不可用。您可以閱讀關於此的更多策略:jQuery/JavaScript to replace broken images

但對於.js或.css,此技術並不可靠,因爲它們的onError屬性爲isn't as supported。但是,在異地.js和.css上回落的情況不太常見,因爲通常您可以提前顯式緩存所有這些資源。