CDN上的应用缓存清单?

时间:2011-09-20 02:09:55

标签: html5 application-cache offline-web-app

我正在阅读有关HTML5应用缓存清单的详细信息(特别是来自this excellent article)。我很好奇这个想法是否有效:

我们在子域内的CDN上托管所有静态资源(脚本,CSS,字体,图像)(例如cdn.example.com,app在www.example.com上)。是否可以在CDN上托管应用缓存清单?例如,

<!doctype html>
<html manifest="http://cdn.example.com/appcache.manifest">
...
<script src="http://cdn.example.com/foo.js"></script>
...
</html>

如果是,清单列表是否可以来自CDN根目录?例如,在清单中:

CACHE MANIFEST
/foo.js

有没有人有这方面的经验和/或知道任何警告?


编辑:WHATWG规范的工作草案显示为“Offline application cache manifests can use absolute paths or even absolute URLs”,然后显示了包含图片CDN网址的示例。

2 个答案:

答案 0 :(得分:12)

我测试了我的清单(在实例中)

CACHE MANIFEST
# 2010-06-20:v1

iscroll.js
http://peach.blender.org/wp-content/uploads/big_big_buck_bunny.jpg

它适用于我......您可以使用验证器http://manifest-validator.com/检查您的清单。

W3C只说文档(具有清单属性的HTML文件)必须与清单相同的原始来源,他们不会告诉资源的URL必须太...你应该仔细阅读(at here )。我还在W3示例(check here)中找到了跨站点URL,这意味着它可以正常工作......

最后,不要尝试在CDN上放置文件,只需将其放入您的服务器并将资源链接到CDN。清单文件必须与其主条目具有相同的来源,其中包括其HTML文件,浏览器检查清单文件以查看其HTML页面列表是否已更改,而不是检查HTML页面以查看它是否指向不同的清单文件。

答案 1 :(得分:0)

缓存的内容必须满足相同的原始限制,并且比较的来源由调用页面(HTML页面)确定。如果您尝试缓存的所有资源都具有不同的主机名,那么根据规范应该拒绝它们。因此,即使您可以将清单指定为cdn而不是主要主机,缓存也应该失败。