2017-03-02 8 views
1

나는 하나의 풀 스크린 WebKitWebView (WebKit 버전 2)를 가진 간단한 GTK3 앱을 가지고있다. 정적 페이지와 일부 애셋을 http://localhost에서로드하고 있습니다. 처음으로 앱을 실행하면로드까지 9 초가 걸립니다 (완료에서 완료 됨까지). 매번 0.5 초가 소요됩니다.GTK 3 WebKit2보기의 속도를 높이는 방법은 캐시에 의해 속도가 느려 집니까?

이 모든 캐시 파일은 모두 ~/.cache에있는 것으로 나타났습니다. 해당 디렉토리를 제거하면로드 시간이 9 초가됩니다. 각 자산에 대해 1ms 미만의 시간을 나타내는 서버 내부 타이밍이 있기 때문에 로컬 서버가 파일을 제공하는 데 9 초가 걸리지 않는다는 것을 알고 있습니다. 이 webview의 로딩 시간을 어떻게 단축합니까? 참고로

는 :

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

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

내가 어떻게 볼 수있는 캐시를 해제하려고 할 것이라고 생각하지만, 아무것도 나는 일을 시도하지했습니다. 앱을 실행하면 캐시가 항상 존재합니다.

업데이트 : 캐시를 비활성화하는 방법을 알았지 만 처음에는 느려집니다. 더 이상 캐시 파일을 가져 오지는 않지만 여전히 위의 타이밍을 얻습니다. 이상하게도 캐시를 비활성화 했으므로 재부팅하지 않고 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); 

답변