在PyQt应用中为QtWebkit小部件缓存外部JavaScript

1 投票
2 回答
1086 浏览
提问于 2025-04-16 05:04

我在我的应用里有一个QWebView,它用来显示存储在应用里的HTML页面,这个页面是作为Qresource保存的。不过,这个页面需要一些比较大的外部JavaScript库,比如MathJax,我想把它们作为资源包含进来,因为它们的体积比较大。

我遇到的问题是,QtWebkit似乎没有像普通浏览器那样缓存这些文件,每次我刷新这个小部件时,它都会重新下载MathJax。

所以我想问的是:有没有办法在第一次下载后缓存这些库,而不需要把它们作为资源打包进应用里呢?

2 个回答

0

你能发一些源代码吗?一旦下载了那些数据,它们会在/tmp/文件夹里存放一段时间。你可能可以使用临时文件夹里的数据,我猜测你没有严格执行这个规定。

1

你可以先试试用简单的QtNetwork下载,看看它是否遵循缓存设置。同时,也要检查一下设置(QWebSettings)是否配置正确。

无论如何,你应该能够插入一个自定义的QNetworkAccessManager,这样就可以处理你自定义的JS库的缓存。可以参考一下这两个链接:http://ariya.blogspot.com/2010/05/qnetworkaccessmanager-tracenet-speed.htmlhttp://ariya.blogspot.com/2010/06/proxy-server-with-filtering-feature.html,从这些例子入手,继续深入了解。

撰写回答