HTML5AppcacheとRack::Offlineを使用してRails3プロジェクトをオフラインで動作させようとしています。マニフェストファイルを最新の状態に保つために、ダイジェスト(application-dfla33q23jad.js)の追加の贅沢を提供するRails 3AssetPipelineを使用しています。理論的には、アセットが変更されるたびに、マニフェストも変更され、アセットの新しいダイジェストバージョンが含まれます。
(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(無許可)エラーがスローされます。それは私の質問に私を導きます:
- 明示的なエントリが更新されるたびに、appcacheはマスターエントリ(index.html)を更新するべきではありませんか?
- appcacheは、基本認証を使用して保護されているエントリを含める方法を提供しますか?
- appcacheリクエストは、最初にページを表示するためにユーザーが入力したのと同じクレデンシャルを使用するべきではありませんか?