今回は、H5 キャッシュ マニフェストの使用方法について説明します。H5 キャッシュ マニフェストを使用する際の注意点は何ですか? 以下は実際のケースです。 アプリの
Updateh5ページでキャッシュの問題が発生しています。デフォルトでは、何もしなくても、アプリにはページをキャッシュするための一定量のスペースが確保されます。アップデートは起動直後にロードされ、アプリのキャッシュ領域が利用可能な場合、アップデートはダウンロードされません。 Android はキャッシュ領域をクリアできますが、iOS はアンインストールと再インストールしかできません (冗談ですか?)。これは最悪のシナリオですが、アドレスを変更することができます。 no-cache
<meta http-equiv="Cache-Control" content="no-cache">
はブラウザにページをキャッシュしないように指示します。実際、ページが変更されていない場合、リクエストは 304 ですが、ページが変更されている場合、リクエストは 200 です。したがって、キャッシュなしを追加することは、毎回完全にダウンロードされることを意味するのではなく、再度ダウンロードされることを意味します。更新されたとき。しかし現時点では、携帯電話ごとにパフォーマンスが異なります。 4sと6spは違います。同じページにアクセスして js を変更します。 4sはアップデートされましたが、6spはそのままです。サーバー側にキャッシュがまだ残っているため、それを修正する方法。まずnginxキャッシュを設定します:
location / { root html; expires -1; index index.html index.htm; }
そしてnginxを再起動する必要があります:
nginx -s reload
今回は6spもアップデートされました。
ただし、nginx を常に再起動することは解決策ではなく、一部のリクエストが失われる可能性があります。そしてこの場合、オフラインではまったく使用できません。例えば、インターネットが切断された状態でメッセージを送信しようとすると、当初設定されていた赤いビックリマーク付きの絵やキャラクターのアバターが表示されなくなります。もちろん、この問題は、base64
stringに変換することで解決できます。 Base64 は非常に長いため、どこに配置してもスペースを占有します。それを解決する方法は、マニフェスト
キャッシュなし+更新ファイル名+テスト対象の更新アドレスマニフェスト
1. html
<html manifest="index.appcache">
CACHE MANIFEST #v1.0.0.0#需要缓存的文件js/zepto.js#不需要缓存的页面 NETWORK:*#无法访问页面 FALLBACK404.html
text/cache-manifest appcache;
この図は 2 つのことを示しています。1 つは、index.appcache が最初にダウンロードされ、次に checking イベント、download イベント、progress イベント、および updateReady イベントがトリガーされることです。 2 つ目は、現在のページがデフォルトでキャッシュされることです。そして実際にはパラメータを受け取り、それをキャッシュします。異なるアドレスを持つ現在のページがキャッシュされている限りのようです(上記のキャッシュディレクトリにzeptoを1つだけ書き込んだだけです)。ページを再度更新します:
Index.appcache が更新されていない場合、チェックはトリガーされません。
キャッシュされたファイルをロードします
ステータスは 200 で、サイズ列はキャッシュからのものです。ブラウザから読み込まれるものは 304 で、1 つは数ミリ秒、もう 1 つは 10 ミリ秒以上です。 F12 キーを押すと開発者モードになり、キャッシュされたファイルが [アプリケーション キャッシュ] 列に表示されます。
ただし、この場所では削除できません。アプリケーションのストレージをクリアする必要があります。
キャッシュされたファイルを更新する
を削除しても、クライアントは引き続き js をダウンロードします。このとき、このキャッシュ ファイルを変更する必要があります: #不需要缓存的页面
NETWORK:
mobile/index.html
*
window.applicationCache.addEventListener("updateready", function(){ location.reload() });
这样才会加载最新的页面。如果首页再发生修改,可以随意(加个空格,加空行)修改缓存文件,就能触发更新。所以剩下的问题就是记得在更新资源之后记得更新缓存文件。建议就是不变的资源(框架样式,框架js,图片)缓存下来,经常要修改的js就让浏览器缓存吧。现在这样就避免了reload nginx。这个效果要比加no-cache的方法好。当然,如果无所谓消息或者reload的影响。no-cache还是很方便,毕竟这个index.appache一旦加上,难以去掉,除非清理缓存。
相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!
推荐阅读:
以上がH5キャッシュマニフェストの使用の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。