QWebkit QWebSettings缓存和QNetworkManager QNetworkDiskCache有什么区别?

use*_*567 3 qt caching qwebkit

有web属性(void QWebSettings :: setAttribute(WebAttribute attribute,bool on)):

QWebSettings::LocalStorageDatabaseEnabled
QWebSettings::OfflineWebApplicationCacheEnabled
QWebSettings::OfflineStorageDatabaseEnabled
Run Code Online (Sandbox Code Playgroud)

还有方法:

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)
Run Code Online (Sandbox Code Playgroud)

还有QNetworkDiskCache可以与QNetworkAccessManager一起使用:

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

它还有几种方法:

void setCacheDirectory(const QString &cacheDir)
void setMaximumCacheSize(qint64 size)
Run Code Online (Sandbox Code Playgroud)

如何使用这个令人困惑的API正确实现缓存?

Rob*_*ght 7

  • 引用的页面缓存是WebKit页面缓存 - 请参阅 http://www.webkit.org/blog/427/webkit-page-cache-i-the-basics/.这是一个内存缓存,用于加速浏览器中的后退/前进操作.
  • setObjectCacheCapacities是指WebKit的内存缓存.
  • 顾名思义,QNetworkDiskCache是​​一个磁盘缓存,Qt可以将其用作从网络获取资源的替代方法.
  • 脱机Web应用程序/本地存储设置用于HTML本地存储和脱机Web应用程序功能.

加载页面时,涉及多种级别的缓存,从最快到最慢:

  1. WebKit的内部内存缓存(页面和对象缓存)
  2. Qt的网络资源磁盘缓存(QNetworkDiskCache)
  3. 用户网络或系统上的任何本地代理缓存
  4. 服务于页面的站点使用的多级缓存(例如,从内容传递网络提供静态资源,Squid缓存)

(3)和(4)不受控制,(1)默认启用,因此您可能需要做的唯一事情是启用(2).