メニューとウェブビューで構成されるアプリを構築しています。ユーザーがメニュー項目を選択すると、webview は関連する html ファイルをロードする必要があります。ここまでは順調ですね。
メニュー項目を押すたびに、webview が html を要求していることを経験しています。セッションで 1 回だけ html をロードしたいので、html ファイルは 1 日の間に変更されません。だから私が最初にしたことは、サーバー側で有効期限ヘッダーを正しく設定することです。ここで確認できます:
http://redbot.org/?uri=http%3A%2F%2Fcutoutcam.com%2Ftest1.php
それから私は試しました
mWebView.getSettings().setCacheMode(WebSettings.LOAD_DEFAULT);
と
mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
結果:
最初のバージョンは毎回htmlを要求します(プロキシでチェック)->それは奇妙です。有効期限が切れていない限り、キャッシュされたバージョンが表示されます。どうしたの?
2 番目のバージョンは、新しい html ファイルを要求することはありません (それは問題ありません。そうすることが想定されているからです)。
ここで失効ヘッダーが正しく機能しない理由を知っている人はいますか?
コード全体:
mWebView = (WebView) getView().findViewById(R.id.fragment_web_view_wv);
mWebView.setWebViewClient(new WebViewClient(this));
mWebView.setScrollBarStyle(View.SCROLLBARS_OUTSIDE_OVERLAY);
mWebView.setWebChromeClient(new WebChromeClient() {
@Override
public void onReachedMaxAppCacheSize(long spaceNeeded, long totalUsedQuota,
android.webkit.WebStorage.QuotaUpdater quotaUpdater)
{
quotaUpdater.updateQuota(spaceNeeded * 2);
}
});
mWebView.getSettings().setDomStorageEnabled(true);
mWebView.getSettings().setAppCacheMaxSize(1024*1024*8);
String appCachePath = getActivity().getApplicationContext().getCacheDir().getAbsolutePath();
mWebView.getSettings().setAppCachePath(appCachePath);
mWebView.getSettings().setAllowFileAccess(true);
mWebView.getSettings().setAppCacheEnabled(true);
mWebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ONLY);
mWebView.getSettings().setDefaultZoom(WebSettings.ZoomDensity.FAR);
mWebView.loadUrl(args.getString("url"));