在PyQt应用中为QtWebkit小部件缓存外部JavaScript
我在我的应用里有一个QWebView,它用来显示存储在应用里的HTML页面,这个页面是作为Qresource保存的。不过,这个页面需要一些比较大的外部JavaScript库,比如MathJax,我想把它们作为资源包含进来,因为它们的体积比较大。
我遇到的问题是,QtWebkit似乎没有像普通浏览器那样缓存这些文件,每次我刷新这个小部件时,它都会重新下载MathJax。
所以我想问的是:有没有办法在第一次下载后缓存这些库,而不需要把它们作为资源打包进应用里呢?
2 个回答
0
你能发一些源代码吗?一旦下载了那些数据,它们会在/tmp/文件夹里存放一段时间。你可能可以使用临时文件夹里的数据,我猜测你没有严格执行这个规定。
1
你可以先试试用简单的QtNetwork下载,看看它是否遵循缓存设置。同时,也要检查一下设置(QWebSettings)是否配置正确。
无论如何,你应该能够插入一个自定义的QNetworkAccessManager,这样就可以处理你自定义的JS库的缓存。可以参考一下这两个链接:http://ariya.blogspot.com/2010/05/qnetworkaccessmanager-tracenet-speed.html 和 http://ariya.blogspot.com/2010/06/proxy-server-with-filtering-feature.html,从这些例子入手,继续深入了解。