マニフェストファイルの色々
<html manifest="/mf.manifest">
<html manifest="mf.manifest">
だと各々のパスからなので絶対パスで。
マニフェストファイルにも絶対パスで
エラー表示されないのでなかなかはまる作業です。
CACHE MANIFEST
#ver 0.5
#以下のファイルをキャッシュする
CACHE:
/manifest.html
manifestの挙動
マニフェストを宣言しているページ自体は必ずキャッシュされる。
そのページから呼び込まれるJS,CSSファイルをキャッシュするかどうか
を判定する
なので、マニフェストを宣言したhtmlのテンプレートを使ったページは
全てキャッシュされる。
phpのようなサーバーサイド的な感覚だとかなりハマった。
という事でマニフェストファイルは
のような読み込むファイルをキャッシュするかどうかのファイルである。
htmlファイルもキャッシュすることもできるが、$.load()等で呼び込まないのであれば
定義する意味がない。そもそもページそのものがキャッシュされるため。
同じドメイン内で複数のマニフェストを宣言するとマニフェストを宣言を読み込んでも
キャッシュを読み込みに行かなくなった。
つまり一つのマニフェストファイルで集中管理する仕様みたいです。
マニフェストに追加されたファイルでキャッシュに入ってない場合はキャッシュに入るまで
サーバーにアクセスしに行くみたいです。
/public/json/dic6.js ある
/public/json/dic7.js ある
/public/json/dic8.js ない
の場合
/public/json/dic8.jsとそのページ/offline/top.htmlにはキャッシュに全て格納しない
限りアクセスしにいくみたいです。
しかし、/offline/top.htmlにはアクセスするが/offline/top.htmlには反映されない
マニフェストファイル通りのキャッシュが揃って初めて反映されるみたい。
う~ん一筋縄ではいかないこの仕様。
結論から言うと、phpのようなサーバーサイドとマニフェストファイルの仕様は互換性がない。
php自体をテンプレートファイルとして扱う事はできないと思います。
ページを動的に変更したいならjavascriptでサーバーにAPIアクセスさせる方法が必要。
====================================
何か更新したいJS,CSSファイル 等があればマニフェストにファイル名を変更して
それを呼び出している関数でも変更されたファイル名に合わせれば、問題なく変更される。
大体はファイル名にverみたいな引数をつけると思います。
例
common.css?ver=1 >> common.css?ver=2
この仕様はまだ不明です。
====================================
変更して初めのアクセスで変更される訳ではなく、一回キャッシュに格納してから
変更された箇所が適用される仕組みです。
firefoxのabout:cache?device=offlineで確認すると一時期、キャッシュが増えるが
少しすればキャッシュが消される。
マニフェストファイルが変更されるたびマニフェストでキャッシュを有効と宣言している
全てのHTMLはアクセスされる。
レスポンスはファイルが変更してなければ304で返すので負荷は気にしなくてもいいかな。。。
APIで動的なデータを取得するAPIはNETWORKに追加しない限りアクセスされない。
この場合マニフェストファイル下のアクセスURIは全てマニフェストファイルに記載しないといけない。
しかも、ディレクトリの設定は使いないらしい。
URIが多くなったら大変そう。。。。
開発運用ではjavascript,css,html等のプログラムファイルを変更すると
マニフェストファイルも変更しないと適用されない。
お~!!マニフェストのタグがFC2ブログで効いているみたい!!
なので日本語の大なりと小なりに変換しました。
追記
2019年ぐらいからマニフェストキャッシュが非推奨となり、service workerで行うようにとの事なので
事実上この記事はあまり役に立たない記事ですが、懐かしい過去の記事としてお楽しみください
登録日:
更新日:
by
プログラマーこまつ