2017-03-02 36 views
1

我有一個簡單的GTK3應用程序,帶有一個全屏WebKitWebView(WebKit版本2)。我正在加載一個靜態頁面和一些來自http://localhost的資產。我第一次運行我的應用程序時,需要9秒才能加載(從COMMITTED到FINISHED)。每次需要0.5秒。如何加快GTK 3 WebKit2視圖緩存的速度?

我注意到這和~/.cache中的一些緩存文件有關。如果我刪除該目錄,我會得到9秒的加載時間。我知道,我的本地服務器不需要9秒鐘來提供這些文件,因爲我在服務器內部計時錶明每個資源的時間少於1毫秒。如何加快此webview的加載時間?

參考:

$ du -csh .cache/webkitgtk/ .cache/gtk_kiosk/ 
4.0K .cache/webkitgtk/ 
544K .cache/gtk_kiosk/ 
548K total 

$ du -sh /www/ 
1.3M /www/ 

我以爲我會嘗試禁用緩存,看看會發生什麼,但沒有我試過的作品。我運行應用程序後,緩存總是在那裏。

UPDATE:我想出瞭如何禁用緩存,但第一次還是很慢。我不再獲取緩存文件,但我仍然獲得上述時間。奇怪的是,現在我已經禁用了緩存,但我沒有辦法在不重新啓動的情況下重現9秒的加載時間。

WebKit2Gtk API參考:https://webkitgtk.org/reference/webkit2gtk/stable/

的實際代碼:

WebKitWebsiteDataManager *manager = 
    webkit_website_data_manager_new("base-cache-directory", "/dev/null", 
            "base-data-directory", "/dev/null", 
            "disk-cache-directory", "/dev/null", 
            "indexeddb-directory", "/dev/null", 
            "local-storage-directory", "/dev/null", 
            "offline-application-cache-directory", "/dev/null", 
            "websql-directory", "/dev/null", 
            NULL); 
WebKitWebContext *context = webkit_web_context_new_with_website_data_manager(manager); 
webkit_web_context_set_cache_model (context, WEBKIT_CACHE_MODEL_DOCUMENT_VIEWER); 

GtkWidget *webView = webkit_web_view_new_with_context(context); 

WebKitSettings *settings = webkit_web_view_get_settings(WEBKIT_WEB_VIEW(webView)); 
webkit_settings_set_enable_page_cache(settings, FALSE); 
webkit_settings_set_enable_offline_web_application_cache(settings, FALSE); 
webkit_web_view_set_settings(WEBKIT_WEB_VIEW(webView), settings); 

webkit_web_view_load_uri(WEBKIT_WEB_VIEW(webView), url); 

回答