【问题标题】:App cache manifest on CDN?CDN 上的应用缓存清单?
【发布时间】:2011-09-20 02:09:55
【问题描述】:

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

我们将所有静态资源(脚本、css、字体、图像)托管在子域内的 CDN 上(例如,cdn.example.com 和应用程序位于 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 URL 的示例。

【问题讨论】:

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


    【解决方案1】:

    我用我的清单进行了测试(在实际示例中)

    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 只说文档(具有 manifest 属性的 HTML 文件)必须与 manifest 相同的来源,他们并没有告诉资源的 URL 必须是太...你应该仔细阅读它(at here)。我还在 W3 示例中找到了跨站点 URL (check here),这意味着它可以正常工作...

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

    【讨论】:

    • “不要尝试将清单文件放在 CDN 上”——为什么不呢?
    • 只是我的建议......因为CDN会缓存那些清单文件,并且很难清除CDN上的缓存。
    • 取决于您的操作方式。 (例如,您可以在清单文件更改时将其内容的哈希附加到其文件名,然后更新您的 HTML 页面以指向 CDN 上的新文件名。该过程可以自动化。)但我明白你的意思。跨度>
    • 是的,没错。请在此处阅读更多信息:whatwg.org/specs/web-apps/current-work/multipage/offline.html,HTML 页面被命名为“主条目”。顺便说一句,我在那个页面上找到了,上面写着:All the master entries have the same origin as the manifest.
    • 我已尝试编辑您的答案以包含此信息。感谢您的解释,我现在更好地理解了缓存清单的内容。
    【解决方案2】:

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

    【讨论】:

    • 我花了一段时间才回来检查这个,但我不确定这个答案是否正确。查看 WHATWG 规范的工作草案,它说“离线应用程序缓存清单可以使用绝对路径甚至绝对 URL”,然后显示了一个带有图像 CDN URL 的示例。 (whatwg.org/specs/web-apps/current-work/multipage/offline.html) 我相信同源限制仅适用于后备条目。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    相关资源
    最近更新 更多