2012-09-06 43 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上回落的情况不太常见,因为通常您可以提前显式缓存所有这些资源。