我有一个骨干1页的应用程序,需要在不同的路线上运行数小时。我在python上创建了一个简单的脚本,它运行我的浏览器并在全屏幕上运行。
import sys
from gi.repository import Gtk, Gdk, WebKit
class BrowserWindow(Gtk.Window):
def __init__(self, *args, **kwargs):
super(BrowserWindow, self).__init__(*args, **kwargs)
self.connect("destroy", Gtk.main_quit)
self.webview = WebKit.WebView()
self.webview.connect("load-finished", self._load_finish)
self.webview.connect("navigation-requested", self._navigation_requested)
settings = self.webview.get_settings()
print settings.get_property("enable-page-cache")
settings.set_property("enable-page-cache", False)
self.webview.set_settings(settings)
self.webview.load_uri("http://www.google.com/")
self.add(self.webview)
self.show_all()
def _load_finish(self, view, frame):
print "Loading completed"
print view
def _navigation_requested(self, view, frame, request):
print "Mavigation change requested"
self.webview.get_back_forward_list().clear()
return False
def main():
Gtk.init(sys.argv)
window = BrowserWindow()
window.show()
window.fullscreen()
Gtk.main()
if __name__ == "__main__":
main()
这里的问题是每当它改变路线时,它会增加一些内存。拥有更多图像的图像可以更快地增加内存。而不是使用内存中的任何东西,它往往会使用更多的内存,但不会使用它。
我尝试搜索一个清晰的功能,但没有得到任何帮助。我也尝试过具有明确功能的QTWebkit,但它也没有帮助。
答案 0 :(得分:0)
真正的问题是:你确定内存使用是一个实际问题吗?现代浏览器(和webview)可能具有非常复杂的缓存行为:“倾向于使用更多内存但不利用它”很可能是一种过于简化的情况图。
说WebkitGTK确实让你可以控制缓存行为:看看set_cache_model()
和相关函数(这些是webkit2gtk中的WebKitWebContext和webkitgtk中的全局函数的一部分)。