不同的 QWebView 对象对相同的 url 产生相同的输出

Different QWebView objects produce identical output for same urls

我发现如果我们用不同的 QWebView 对象并行加载一个 url,我们将得到相同的输出:这个 QWebView 中只有一个会发出真正的请求。这是示例:

from PyQt5.QtCore import QUrl
from PyQt5.QtWidgets import QApplication
from PyQt5.QtWebKitWidgets import QWebView

def load_and_print(url):
    view = QWebView()
    view.load(QUrl(url))
    def on_ready(ok):
        print(view.page().mainFrame().documentElement().toPlainText())
    view.loadFinished.connect(on_ready)

if __name__ == '__main__':
    app = QApplication([])

    # This url outputs random number:
    url = 'https://www.random.org/integers/?num=1&min=1&max=100&col=1&base=10&format=plain&rnd=new'
    load_and_print(url)
    load_and_print(url)

    app.exec_()

    # output:
    # 39
    # 39

如果url相同,我们如何获得"fair",每个QWebView对象的唯一输出?

PyQt 5.4,windows7

解决方案是禁用缓存:

view.page().settings().setObjectCacheCapacities(0, 0, 0)