2012-02-01 1 views
3

Там являются веб-атрибуты (недействительный QWebSettings :: SetAttribute (атрибут WebAttribute, BOOL на)):В чем разница между кешем QWebSittings QWebkit и QNetworkManager QNetworkDiskCache?

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?

+0

Какое кэширование: браузер или общая сеть ввода/вывода? – Neox

+0

Я пишу браузер. – user1180567

+0

В этом случае используйте QWebSettings. – Neox

ответ

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

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

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

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

Смежные вопросы