В чем разница между кешем QWebkit QWebSettings и QNetworkMiskager QNetworkDiskCache? - PullRequest
3 голосов
/ 01 февраля 2012

Есть веб-атрибуты (void QWebSettings :: setAttribute (атрибут WebAttribute, bool on)):

QWebSettings::LocalStorageDatabaseEnabled
QWebSettings::OfflineWebApplicationCacheEnabled
QWebSettings::OfflineStorageDatabaseEnabled

Есть также методы:

void QWebSettings::enablePersistentStorage(const QString &path = QString())
void QWebSettings::setMaximumPagesInCache(int pages)
void QWebSettings::setObjectCacheCapacities(int cacheMinDeadCapacity, int cacheMaxDead, int totalCapacity)
void QWebSettings::setOfflineStorageDefaultQuota(qint64 maximumSize)
void QWebSettings::setOfflineStoragePath(const QString &path)
void QWebSettings::setOfflineWebApplicationCachePath(const QString &path)
void QWebSettings::setOfflineWebApplicationCacheQuota(qint64 maximumSize)

И есть QNetworkDiskCache, который можно использовать с QNetworkAccessManager:

QNetworkDiskCache *diskCache = new QNetworkDiskCache(this);
QString location = QDesktopServices::storageLocation(QDesktopServices::CacheLocation);
diskCache->setCacheDirectory(location);
networkAccessManager->setCache(diskCache);

Он также имеет несколько методов:

void setCacheDirectory(const QString &cacheDir)
void setMaximumCacheSize(qint64 size)

Как правильно реализовать кэширование с помощью этого непонятного API?

1 Ответ

7 голосов
/ 23 февраля 2012
  • Упоминаемый кеш страницы - это кеш страницы WebKit - см. http://www.webkit.org/blog/427/webkit-page-cache-i-the-basics/. Это кэш в памяти для ускорения операций возврата / пересылки в браузере.
  • setObjectCacheCapacitiesссылается на кэш в памяти WebKit.
  • QNetworkDiskCache, как следует из названия, дисковый кэш, который Qt может использовать в качестве альтернативы извлечению ресурсов из сети.
  • Автономное веб-приложение /Настройки локального хранилища предназначены для локального хранилища HTML и функций автономного веб-приложения.

При загрузке страниц используется несколько уровней кэширования, от самого быстрого до самого медленного:

  1. Внутренние кэши в памяти WebKit (кэши страниц и объектов)
  2. Дисковый кэш Qt сетевого ресурса (QNetworkDiskCache)
  3. Любое локальное кэширование прокси в сети или системе пользователя
  4. Несколько уровней кэширования, которые использует сайт, обслуживающий страницу (например, обслуживание статических ресурсов из сетей доставки контента, кешей Squid)

(3) и (4) находятся вне вашего контроля, (1) включен по умолчанию, поэтому единственное, что вам нужно сделать, это включить (2).

...