Friday, December 3, 2010

iPhone/iPad向けWebアプリ開発時のローカルファイルキャッシュ

最初理解できなかった。しかし、よく読んだらHTML5manifest機能を利用しているとわかった。
なるほどという感想だね。

iPhone/iPad向けWebアプリ開発時のローカルファイルキャッシュ
http://cloudcodedev.blogspot.com/2010/08/iphoneipadweb.html

iPhone/iPad向けのWebアプリケーションを開発する際、SenchaやjQTouchなどの
ライブラリーを活用してWebアプリケーションをあたかもネイティブアプリのように
振舞わせるわけだが、その際に避けて通れないのが
「ライブラリ・CSSなどのロード時の速度低下」です。

ライブラリやCSSなどのファイルのロードがかなり時間を食ってしまい、
利用者に「このページ遅いな」と思われてしまいます。

それを防ぐためには
「iPhone/iPadのフラッシュメモリ内にJavaScriptやCSSなどのファイルを保存させる」
という設定を行ないます。

この設定には「manifest」ファイルをサーバ側で用意し、manifestファイルには、
「どのファイルをローカルキャッシュさせるか」を記述してあげる必要があります。


以下に記述例を記載します。

使用するファイルの構成は以下の通りとなります。

【プロジェクトフォルダ内】
CSSファイル
/css/js/sencha_icons/mystyle.css
(元々app.yamlに以下の
- url: /css
  static_dir: css
という静的ファイルディレクトリ指定の設定をしています。)

JavaScirptファイル
/css/js/sencha_icons/ext-touch.js
/css/js/sencha_icons/index.js

作成したmanifestファイル
/css/js/sencha_icons/sitefile.manifest


1.まずはじめに、使用するHTMLファイル内のソースに



と記述します。
(example.manifestはexampleという名前のマニフェストファイルとなります。)


2.app.yamlに以下の内容を記述します。





- url: /css/js/sencha_icons/sitefile.manifest                        →所在URL
  static_files: /css/js/sencha_icons/sitefile.manifest          →ファイルの在処
  mime_type: text/cache-manifest                                        →mime_typeの指定
(↑これがないとマニフェストファイルとして認識されません。)
  upload: /css/js/sencha_icons/sitefile.manifest                →ファイルのアップロード先



3.sitefile.manifestファイル(ファイル名はsitefileでなくてもOK)を作成し、以下の内容を記述します。

CACHE:
mystyle.css
ext-touch.js
index.js

4.デプロイしてiPhone/iPadのブラウザで再読込する。


これで上記の3つのファイルがiPhone/iPadのローカルに保存され、
ページのロードが高速になります。




参考URL: http://www.html5rocks.com/tutorials/appcache/beginner/