ブラウザオフラインアプリケーションが作れる「Application Cache」

2011.08.26

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

アプリケーションキャッシュとは

HTML5にはファイルをローカルにキャッシュする仕組みが用意されています。
アプリケーションキャッシュを利用することで、あまり変化のないファイルをローカルにキャッシュさせ、アプリケーションの読み込み時間を短縮することができます。もちろん、アプリケーションではなく、Webサイトへの応用も可能です。更にすべてのファイルをキャッシュさせることで、オフライン利用が可能なWebページ、アプリケーションを作成することができます。
これを利用するにはManifestファイルというものを作成します。

アプリケーションキャッシュの保存容量

確認が取れた正確な情報ではありませんが、フォーラムなどでは普通のキャッシュと同様に無制限に保存され、足りなくなれば消されるようです。

Manifestファイルのサンプル

マニフェストファイルの拡張子が.manifestから.appcacheに変更されたようです。Content-Typeの指定により拡張子の影響はほとんどないと思われます。

以下のようにキャッシュさせたいファイル、ネットワーク経由で取得したいファイルを定義し、「.appcache」という形式で任意の場所に保存します。

 CACHE MANIFEST # Revision: 20100526-2100 ## Cache Files CACHE: js/jquery.js js/common.js ## Network Files NETWORK: /index.php /index.js

キャッシュするファイルを定義する(CACHE:)

CACHE:という宣言以降にキャッシュするファイルを定義します。パスはマニフェストファイルからのURIを指定します。

ネットワークアクセスするファイルを定義する(NETWORK:)

NETWORK:という宣言以降にネットワークアクセスするファイルを定義します。パスはマニフェストファイルからのURIを指定します。

保存したファイルをHTML要素にひもづける

ファイルを作成しただけでは、アプリケーションキャッシュは有効になりません。
アプリケーションキャッシュを有効にしたいHTMLファイルのHTML要素にmanifest属性を追加し、パスを通します。

Content-Typeの設定

最後に、ブラウザに対してmanifestファイルを認識させるための指定を行います。
ブラウザは.appcacheファイルを「Content-Type: text/cache-manifest」としてヘッダー送出されないと正しく認識してくれません。

Content-TypeはApacheのconfファイルか.htaccessで設定できます。

.htaccessの設定例

 AddType text/cache-manifest .appcache

httpd.confの設定例

 AddType text/cache-manifest .appcache

参考サイト

サンプル

応用次第でオフラインアプリケーションが作成できますね。

Application CacheとjQuery Mobileを使ったオフライン対応でシンプルなタスクアプリはこちら。
iPhone

この記事は「Application Cache」の転載です。