我有一个简单的GTK3应用程序,带有一个全屏WebKitWebView(WebKit版本2)。我正在加载一个静态页面和http://localhost
的一些资源。我第一次运行我的应用程序时,需要9秒钟才能加载(从COMMITTED到FINISHED)。每次需要0.5秒。
我注意到这与~/.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);
答案 0 :(得分:0)
可能是Accelerated compositing in WebKitGTK+。
尝试设置环境变量WEBKIT_DISABLE_COMPOSITING_MODE=1
以查看任何更改。
This mailing list thread也可能有帮助。