webview緩存時間
Ⅰ 如何設置webview的緩存 ios
首先點擊桌面上的「設置」
接著打開一個叫「Safari」的圖標
其次有兩個「清除歷史數雀喊據和記錄」
然後點擊清除就可以了
其次再告訴大家如何清除QQ里的緩存,進入到QQ界頃判野沖指面,選擇「設置」,點擊「輔助功能」
最後直接清除QQ聊天記錄和圖片就可以了。
Ⅱ 小米4c里android system webview可以刪除嗎
不能刪除,這是系統的瀏覽器內核。
一、Android system webview是什麼?
1、安卓App中用於顯示網頁內容的組件,更不更新無所謂別卸載了就行。
2、它是Chrome看視頻以及一些視覺元素會用到,有人反應更新後chrome沒法看視頻了,所以升不升級無所謂。但千萬別刪,這個程序刪除以後手機上的瀏覽器打開就會停止。
二、Android system webview的性能優化有哪些?
1.頁面載入速度優化。
影響頁面載入速度的因素有非常多,在對 WebView 載入一個網頁的過程進行調試發現,每次載入的過程中都會有較多的網路請求,除了 web 頁面自身的 URL 請求,還會有 web 頁面外部引用的JS、CSS、字體、圖片等等都是個獨立的 http 請求。這些請求都是串列的,這些請求加上瀏覽器的解析、渲染時間就會導致 WebView 整體載入時間變長,消耗的流量也對應的真多。
2.選擇合適的 WebView 緩存。
WebView 緩存看似就是開啟幾個開關的問題,但是要弄懂這幾種緩存機制還是很有深度。下圖是騰訊某工程師總結六種 H5 常用的緩存機制的優勢及適用場景。
Ⅲ android中 如何清理webview緩存
一、清除cookie
public static void clearCookies(Context context) {
// Edge case: an illegal state exception is thrown if an instance of
// CookieSyncManager has not be created. CookieSyncManager is normally
// created by a WebKit view, but this might happen if you start the
// app, restore saved state, and click logout before running a UI
// dialog in a WebView -- in which case the app crashes
@SuppressWarnings("unused")
CookieSyncManager cookieSyncMngr =
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();
}
這是facebook sdk的源碼,我不知道第一句到底起了什麼作用?
二、清除webview緩存,查看root過的手機data下的文件,會發現有這個東西:webview命名的東西
刪除保存於手機上的緩存.
// clear the cache before time numDays
private int clearCacheFolder(File dir, long numDays) {
int deletedFiles = 0;
if (dir!= null && dir.isDirectory()) {
try {
for (File child:dir.listFiles()) {
if (child.isDirectory()) {
deletedFiles += clearCacheFolder(child, numDays);
}
if (child.lastModified() < numDays) {
if (child.delete()) {
deletedFiles++;
}
}
}
} catch(Exception e) {
e.printStackTrace();
}
}
return deletedFiles;
}
打開關閉使用緩存
//優先使用緩存:
WebView.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
//不使用緩存:
WebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);
在退出應用的時候加上如下代碼
File file = CacheManager.getCacheFileBaseDir();
if (file != null && file.exists() && file.isDirectory()) {
for (File item : file.listFiles()) {
item.delete();
}
file.delete();
}
context.deleteDatabase("webview.db");
context.deleteDatabase("webviewCache.db");
發現這個問題,一個朋友在iteye上問的:
Android的CookieManager只提供了removeAllCookies方法,用來刪除所有的cookie,有什麼辦法只刪除和特定url關聯的cookie呢?本來打算使用setCookie(url, value)將指定url關聯的cookie設為空串,但試了一下發現這個方法只是在已有的基礎上繼續添加cookie,並不能重置已有的cookie。
有朋友給打答案:
/**
* 同步一下cookie
*/
public static void synCookies(Context context, String url) {
CookieSyncManager.createInstance(context);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();//移除
cookieManager.setCookie(url, cookies);//指定要修改的cookies
CookieSyncManager.getInstance().sync();
}
Ⅳ 如何有效提升WebView的載入速度
在做混合應用的時候,有幾個痛點,一個是無網路無法使用,還有一個是受網路環境影響的網頁載入速度。今天就這兩個問題,和大家交流一下自己的經驗。
離線緩存
這個比較容易,開啟webView的緩存功能就可以了。
WebSettings settings = webView.getSettings();
settings.setAppCacheEnabled(true);
settings.setDatabaseEnabled(true);
settings.setDomStorageEnabled(true);//開啟DOM緩存,關閉的話H5自身的一些操作是無效的settings.setCacheMode(WebSettings.LOAD_DEFAULT);
這邊我們通過setCacheMode方法來設置WebView的緩存策略,WebSettings.LOAD_DEFAULT是默認的緩存策略,它在緩存可獲取並且沒有過期的情況下載入緩存,否則通過網路獲取資源。這樣的話可以減少頁面的網路請求次數,那我們如何在離線的情況下也能打開頁面呢,這里我們在載入頁面的時候可以通過判斷網路狀態,在無網路的情況下更改webview的緩存策略。
ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo info = cm.getActiveNetworkInfo();if(info.isAvailable())
{
settings.setCacheMode(WebSettings.LOAD_DEFAULT);
}else {
settings.setCacheMode(WebSettings.LOAD_CACHE_ONLY);//不使用網路,只載入緩存}
這樣我們就可以使我們的混合應用在沒有網路的情況下也能使用一部顫遲腔分的功能,不至於什麼都顯示不了了,當然如果我們將緩存做的更好一些,在網路好的時候,比如說在WIFI狀態下,去後台載入一些網頁緩存起來,這樣處理的話,即使在無網路情況下第一次打開某些頁面的時候,也能將該頁面顯示出來。
當然緩存資源後隨之會帶來一個問題,那就是資源無法及時更新,WebSettings.LOAD_DEFAULT中的頁面中的緩茄衫存版本好像不是很起作用,所以我們這邊可能需要自己做一個緩存版本控制。這個緩存版本控制可以放在APP版本更新中。
if (upgrade.cacheControl > cacheControl)
{
webView.clearCache(true);//刪除DOM緩存
VersionUtils.clearCache(mContext.getCacheDir());//刪除APP緩存
try
{
mContext.deleteDatabase("webview.db");//刪除資料庫緩存
mContext.deleteDatabase("webviewCache.db");
} catch (Exception e)
{
}
}
預載入
有時候一個頁面資源比較多,圖片,CSS,js比較多,還引用了JQuery這種龐然巨獸,從載入到頁面渲染完成需要比較長的時間,有一個解決方案是將這些資源打包進APK裡面,然後當頁面載入這些資源的時候讓它從本地獲取,這樣可以提升載入速度也能減少伺服器壓力。重寫WebClient類中的shouldInterceptRequest方法,再將這旦哪個類設置給WebView。
webView.setWebViewClient(new WebViewClient()
{ @Override
public WebResourceResponse shouldInterceptRequest(WebView view, String url)
{ if (url.contains("[tag]"))
{
String localPath = url.replaceFirst("^http.*[tag]\\]", ""); try
{
InputStream is = getApplicationContext().getAssets().open(localPath);
Log.d(TAG, "shouldInterceptRequest: localPath " + localPath);
String mimeType = "text/javascript"; if (localPath.endsWith("css"))
{
mimeType = "text/css";
} return new WebResourceResponse(mimeType, "UTF-8", is);
} catch (Exception e)
{
e.printStackTrace(); return null;
}
} else
{ return null;
}
}
});
這里我們隊頁面中帶有特殊標記的請求進行過濾替換,也就是上面代碼中的[tag],這個可以跟做後台開發的同事約定好來就行了。對圖片資源或者其他資源進行替換也是可以的。補充一個小點可以通過settings.setLoadsImagesAutomatically(true);來設置在頁面裝載完成之後再去載入圖片。
H5優化
Android的OnPageFinished事件會在Javascript腳本執行完成之後才會觸發。如果在頁面中使 用JQuery,會在處理完DOM對象,執行完$(document).ready(function() {});事件自會後才會渲染並顯示頁面。而同樣的頁面在iPhone上卻是載入相當的快,因為iPhone是顯示完頁面才會觸發腳本的執行。所以我們這邊的解決方案延遲JS腳本的載入,這個方面的問題是需要Web前端工程師幫忙優化的,網上應該有比較多LazyLoad插件,這里放一個比較老的鏈接Painless JavaScript lazy loading with LazyLoad,同樣也放上一小段前端代碼,僅供參考。
<script src="/css/j/lazyload-min.js" type="text/javascript"></script><script type="text/javascript" charset="utf-8">
loadComplete() { //instead of document.read();
}
function loadscript() {
LazyLoad.loadOnce([ '/css/j/jquery-1.6.2.min.js', '/css/j/flow/jquery.flow.1.1.min.js', '/css/j/min.js?v=2011100852'
], loadComplete);
}
setTimeout(loadscript,10);</script>
Ⅳ qwebview默認是不緩存的嗎,如何給qwebview增加緩存
1. 需要給 QWebSettings 設置屬性 QWebSettings::LocalStorageEnabled 為 true
2. 調用 QWebSettings 的 enablePersistentStorage 方法。
這個方法會同時開啟很多設置:
This method will simultaneously set and enable the iconDatabasePath(), localStoragePath(), offlineStoragePath() and ().
示例代碼:
webView->settings()->setAttribute(QWebSettings::LocalStorageEnabled, true);
webView->settings()->enablePersistentStorage(QDir::homePath());
其他的設置,如 setOfflineStorageDefaultQuota 都是可選的。