Webアプリの更新について
動的に内容が変更されるWebアプリで
アプリケーションキャッシュを使うと
最初に読み込んだ画面を、
ずっとキャッシュし続けるため
更新されなくなってしまう
このため、動的にHTMLが変更かれる箇所では
アプリケーションキャッシュは使わない
また、アプリケーションキャッシュとして読み込んだファイルは
ブラウザーから明示的に更新をチェックしないと
キャッシュが更新されないことがある
このため、更新チェックのJavascriptなどを使わないと
更新できないWebアプリになる
このため、
キャッシュファイルの更新と
アプリケーションの更新をする必要がある
まず、キャッシュファイルの更新を検知してWebアプリを更新する方法
アプリケーションキャッシュを示す
applicationCacheでは
キャッシュファイルが更新されると発生する
updatereadyイベントが使える
この
updatereadyイベントを使うことで
更新チェックと
新しいバージョンへのアップデートができる
if(applicationCache){ applicationCache.addEventListener("updateready",function(){ if(confirm("新しいバージョンが利用できます。アップデートしますか?")){ //キャッシュのアップデートと画面の再読込 applicationCache.swapCache(); location.load(); } },true); }
これだけでも更新チェックとアップデートができるけど
コンテンツを更新しても
updatereadyイベントが発生しないこともある
そのため念のために
update()
を、使うことで
明示的にキャッシュの更新と、リソース再読込ができるようにしておく
使い方は
applicationCache.update();
とする
これは、ボタンなどで使うことで
再読込ボタンにすることもできる
HTMLで
<button type="submit" id="update">更新</button>
Javascriptで
$(document).on("click","#update",function(e){ //キャッシュのアップデートと画面の再読込 applicationCache.update(); location.load(); });
注意点としては、Androidだと
アプリケーションキャッシュを使うことで
画面遷移ができなくなることがある
このため、Androidでは、Ajaxによる画面遷移を無効化しておく
if(navigator.userAgent.match(/Android/)){ $.mobile.ajaxEnabled = false; }
match()は正規表現
マッチするものを調べるやり方
詳しくはドットインストールの正規表現を参考にするとわかりやすい