Skip to content

Instantly share code, notes, and snippets.

@to
Created June 28, 2012 14:24
Show Gist options
  • Save to/3011667 to your computer and use it in GitHub Desktop.
Save to/3011667 to your computer and use it in GitHub Desktop.
Offline Application Cache on iOS 5
CACHE MANIFEST
NETWORK:
*
<!doctype html>
<html manifest="cache.manifest">
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<meta name="apple-mobile-web-app-capable" content="yes">
<title>cache</title>
<script type="text/javascript">
function startApplication(status){
alert('START: ' + status);
}
(function(){
// 初回読み込み/マニフェストファイルの取得失敗/未キャッシュのいずれかか?
if(applicationCache.status == applicationCache.UNCACHED){
startApplication('uncached');
// キャッシュ完了後に発生するupdatereadyによる再読み込みを避ける
return;
}
applicationCache.addEventListener('updateready', function(){
alert('reload');
// ページを再読み込みするとswapCacheは自動で行われる
window.location.reload();
}, false);
applicationCache.addEventListener('noupdate', function(){
startApplication('noupdate');
}, false);
applicationCache.addEventListener('error', function(){
if(navigator.onLine){
// サーバー接続失敗/キャッシュファイルの記述エラーなど
alert('error');
startApplication('error');
} else {
startApplication('offline');
}
}, false);
})();
</script>
</head>
<body>
</body>
</html>
@to
Copy link
Author

to commented Jun 28, 2012

呼び出し元のhtmlは自動でキャッシュされる。またキャッシュを回避する方法も見つからなかった(NETWORKセクションへの記述も無視される)。小さな画像は自動でキャッシュされるため、実験の際はクエリパラメーターの付加などでデフォルトキャッシュの挙動を回避する必要がある(こちらもNETWORKセクション無視。iOS Safariのキャッシュ周辺の動作はバグが多い)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment