У меня есть приложение, которое нужно улучшить, добавив к нему дисковый кеш. Потому что это будет развернуто на разных устройствах в будущем. Я протестировал текущую версию с кэшированием памяти на тестовом устройстве. Как и ожидалось, первая загрузка конкретной страницы заняла около 100+ миллисекунд. После этого он уменьшился до 50-80 секунд из-за кеширования памяти. Поэтому мой следующий подход состоял в том, чтобы повысить производительность, добавив дисковый кэш. Я упоминал об этом документация как это сделать. Но после добавления дискового кэша я не вижу улучшения начального времени загрузки по сравнению с более ранней версией приложения.
Кто-нибудь может указать, что я делаю не так с моим подходом? Соответствующий фрагмент кода приведен ниже.
WebPageCheck.h
bool m_bInitialized; ///< state if the CWMWebPageCheck has been initialized
QUrl m_oUrl; ///< the url which has to be scanned
QStringList m_oRequests; ///< list of requests
QNetworkAccessManager *m_oNetworkManager; ///< networkmanager to start network requests
//added by Isuru for implementing the diskcache
QNetworkDiskCache *m_oDiskCache;
CHashReplyManager m_oReplyManager; ///< reply manager which handles the network replies
WebPageCheck.cpp
CWMWebPageCheck::CWMWebPageCheck(QUrl oUrl)
{
m_bInitialized = false;
m_oUrl = oUrl;
qDebug() << "Starting WebPageCheck with url: " << oUrl;
m_oRequests << "scripts/scripts_WM.js";
m_oRequests << "screens_wm/logbook_wm.html";
m_oNetworkManager = new QNetworkAccessManager();
m_oDiskCache = new QNetworkDiskCache();
m_oDiskCache->setCacheDirectory(QCoreApplication::applicationDirPath() + "/cacheMachine");
m_oNetworkManager->setCache(m_oDiskCache);
connect(m_oNetworkManager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onReplyFinished(QNetworkReply*)));
connect(&m_oReplyManager, SIGNAL(sigCalculationError(Te_SealRequest)), this, SLOT(onSigCalculationError(Te_SealRequest)));
connect(&m_oReplyManager, SIGNAL(sigCalculationFinished(Te_SealRequest,QByteArray)), this, SLOT(onSigCalculationFinished(Te_SealRequest,QByteArray)));
m_oReplyManager.setCount(m_oRequests.length());
}
Было бы очень полезно, если бы кто-то мог перечислить шаги, которые я должен предпринять, чтобы включить дисковый кеш, используя Qt, объясняя использование QNetworkRequest
,
Задача ещё не решена.
Других решений пока нет …