我正在尝试使用HTML5 Appcache和Rack :: Offline使Rails 3项目脱机工作。我正在使用Rails 3 Asset Pipeline,它提供了额外的摘要(application-dfla33q23jad.js)来保持清单文件的新鲜感。从理论上讲,只要资产发生变化,清单也会发生变化,包括资产的新消化版本。
(application.manifest)
CACHE MANIFEST
assets/application-785189fec63978372c177135a521e081.js
assets/application-c69de8169df1ae42a1a4dcafdc5a1af4.css
assets/application.css
assets/application.js
浏览器检测到新清单,新资产在后台缓存,但html不会更新以反映更新的资产。几乎所有资产都被缓存,除了主条目。请注意以下js和css链接如何与新版本具有相同的摘要,从而在刷新时产生404(未找到)。
(index.html的)
<html manifest="/application.manifest">
<head>
<title>Project</title>
<link href="/assets/application-cb58254cec63978372c177135a521e081.js" media="all" rel="stylesheet" type="text/css" />
<script src="/assets/application-918b26fdf1ae42a1a4dcafdc5a1af4.css" type="text/javascript"></script>
</head>
<body>
<p> Content </p>
</body>
</html>
我首先想到的是将html明确地添加到清单中,以便html更新其余的资产。
CACHE MANIFEST
index.html
assets/application-785189fec63978372c177135a521e081.js
assets/application-c69de8169df1ae42a1a4dcafdc5a1af4.css
assets/application.css
assets/application.js
我相信这会有效,但index.html受基本身份验证保护,因此在尝试更新appcache时会抛出401(未经授权)错误。这引出了我的问题: