From 1027a807861ae6100394c1aeb364923146787499 Mon Sep 17 00:00:00 2001 From: Kovid Goyal Date: Mon, 23 Jan 2017 12:41:08 +0530 Subject: [PATCH] E-book viewer: Fix a regression that caused an increase in load times when loading the individual HTML files inside an EPUB book. Fixes #1658578 [loading flow delay for every page](https://bugs.launchpad.net/calibre/+bug/1658578) --- src/calibre/gui2/viewer/fake_net.py | 6 +++++- src/calibre/gui2/viewer/main.py | 1 + 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/calibre/gui2/viewer/fake_net.py b/src/calibre/gui2/viewer/fake_net.py index 318bc54f72..96a0df8908 100644 --- a/src/calibre/gui2/viewer/fake_net.py +++ b/src/calibre/gui2/viewer/fake_net.py @@ -6,7 +6,7 @@ from __future__ import (unicode_literals, division, absolute_import, print_function) import os -from PyQt5.Qt import QNetworkReply, QNetworkAccessManager, QUrl, QNetworkRequest, QTimer, pyqtSignal +from PyQt5.Qt import QNetworkReply, QNetworkAccessManager, QUrl, QNetworkRequest, QTimer, pyqtSignal, QByteArray from calibre import guess_type as _guess_type, prints from calibre.constants import FAKE_HOST, FAKE_PROTOCOL, DEBUG @@ -19,6 +19,9 @@ def guess_type(x): return _guess_type(x)[0] or 'application/octet-stream' +cc_header = QByteArray(b'Cache-Control'), QByteArray(b'max-age=864001') + + class NetworkReply(QNetworkReply): def __init__(self, parent, request, mime_type, data): @@ -30,6 +33,7 @@ class NetworkReply(QNetworkReply): self.__data = data self.setHeader(QNetworkRequest.ContentTypeHeader, mime_type) self.setHeader(QNetworkRequest.ContentLengthHeader, len(self.__data)) + self.setRawHeader(*cc_header) QTimer.singleShot(0, self.finalize_reply) def bytesAvailable(self): diff --git a/src/calibre/gui2/viewer/main.py b/src/calibre/gui2/viewer/main.py index 80b24cf3ce..a5a204431a 100644 --- a/src/calibre/gui2/viewer/main.py +++ b/src/calibre/gui2/viewer/main.py @@ -954,6 +954,7 @@ class EbookViewer(MainWindow): while worker.isAlive(): worker.join(0.1) QApplication.processEvents() + self.view.settings().clearMemoryCaches() if worker.exception is not None: tb = worker.traceback.strip() if tb and tb.splitlines()[-1].startswith('DRMError:'):