DX・デジタルトランスフォーメーション

AppStoreにて無料公開中! ”システム手帳”で検索! - AppStoreへ iPad版 - iPhone版

ブロックチェーン・暗号技術 | android | iOS | Web | アプリの著作権 | 日本のなりたち | 禅・大乗仏教 | 新しい社会

WebView(UIWebView)でhttpキャッシュコントロールを実現する方法

WebView(UIWebView)でhttpキャッシュコントロールを実現する方法

httpという通信プロトコルは通信を円滑に行うための仕組みとして、「キャッシュ」という仕組みをもっている。

ブラウザなどのhttpクライアントが一度受け取ったテキストや画像などのコンテンツを一定期間保持したままにして、その保持期間のあいだはサーバーから取得しないというのがキャッシュ機構である。

httpキャッシュは次の3通りの方法で制御することができる。

それぞれ一長一短があるが、キャッシュ制御定義をきめ細かく設定できるし動作も安定しているため、Apatchなどのサーバー側でhttpキャッシュ制御を行うことをお勧めする。

・ブラウザ、クライアント設定

httpクライアントで設定する場合は、すべてのコンテンツがキャッシュ対象から外れるため、ウェブアプリなどjavaScriptフレームワークを多用するコンテンツの場合には、アクセスのたびに毎回フレームワークをダウンロードし直すことになり、アクセス開始してからコンテンツがロード完了するまでの時間がかかり過ぎる場合がある。

<android>


WebView webView = (WebView)findViewById(R.id.webView);
WebSettings webSet = webView.getSettings();
webSet.setCacheMode(LOAD_NO_CACHE);


<iOS>


[[NSURLCache sharedURLCache] setMemoryCapacity:0];

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType {
    [[NSURLCache sharedURLCache] removeAllCachedResponses];

    if (request.cachePolicy != NSURLRequestReloadIgnoringLocalCacheData) {
        NSMutableURLRequest *urlRequest = (NSMutableURLRequest *)request;
        urlRequest.cachePolicy = NSURLRequestReloadIgnoringLocalCacheData;
    }
    
    return YES;
}

・Apatchサーバ設定

一番おすすめなのはサーバ側でキャッシュ制御を行うことだ。

httpプロトコルでは、コンテンツをサーバーからクライアントに送信する際にhttpヘッダーにキャッシュ制御を定義することができる。

ファイルタイプごとに定義できるので、javaScriptフレームワークやxxx.jsなどのプログラム部分のみをキャッシュし、更新頻度が高いコンテンツ部分はキャッシュしないように定義することができる。

.htaccessで頻繁に更新されることが想定されるファイルタイプをキャッシュしないように定義する。

<html、画像、CSSファイルをキャッシュ抑制する例>



	Header set Pragma no-cache
	Header set Cache-Control no-cache

・htmlコンテンツ設定

htmlのバージョンが改版されるごとに、httpキャッシュに対する定義方法が変わっている。

html5.1からは、htmlでのhttpキャッシュ制御を行う方法は定義されていない。

そもそもコンテンツ本文で通信プロトコルに関する定義を行うことは避けた方が良い。

<html4まで有効だったhttpキャッシュ制御方法>




html5からmetaタグのhttp-equiv属性の”Cache-Control”が使えなくなった。

<html5で有効だったhttpキャッシュ制御方法>






CACHE MANIFEST
CACHE:
NETWORK:
\*

html5.1からはhtmlタグのmanifest属性は使えなくなった。

「manifestファイル」でキャッシュコントロールするには正規表現が使えないなど、機能がとても不足していた。

2023年12月
     12
3456789
10111213141516
17181920212223
24252627282930
31      
android
iOS
web
アプリの著作権
ブロックチェーン/暗号技術
新しい社会
禅・大乗仏教
日本のなりたち

AppStoreにて無料公開中! ”システム手帳”で検索! - AppStoreへ iPad版 - iPhone版
デジタルトランスフォーメーションで新しい生活を提案!