2017-03-02 39 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); 

回答