2012-02-01 13 views
3

があるウェブ属性(無効QWebSettings :: setAttributeメソッドで(WebAttribute属性、ブール値)):QWebkit QWebSettingsキャッシュと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) 

をそしてQNetworkAccessManagerで使用することができますQNetworkDiskCacheがあります:

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

キャッシュの種類:ブラウザまたは一般的なネットワークI/O? – Neox

+0

私はブラウザを書いています。 – user1180567

+0

この場合、QWebSettingsを使用してください。 – Neox

答えて

7
  • 参照されるページキャッシュは、WebKitページキャッシュです。 http://www.webkit.org/blog/427/webkit-page-cache-i-the-basics/を参照してください。この は、 ブラウザでの戻る/転送操作を高速化するメモリ内キャッシュです。
  • setObjectCacheCapacitiesは、WebKitのメモリ内キャッシュを指します。
  • QNetworkDiskCacheは、名前からわかるように、Qtがネットワークからリソースを取得する代わりに使用できるディスクキャッシュです。
  • オフラインウェブアプリ/ローカルストレージの設定は、HTMLローカルストレージとオフラインウェブアプリの機能です。

    1. WebKitの内蔵メモリー内のキャッシュ(ページおよびオブジェクトキャッシュ)
    2. Qtのディスクキャッシュ:

ページをロードし、から最速最も遅いに、関係するキャッシングのレベルの数があります(QNetworkDiskCache)

  • ユーザーのネットワークまたはシステム上のローカルプロキシキャッシング
  • ページを提供するサイトが使用する複数のレベルのキャッシング(たとえば、コンテンツ配信からの静的リソースの配信ネットワーク、Squidキャッシュ)
  • (3)と(4)は制御から外れています。(1)はデフォルトで有効になっているため、可能な場合はenable(2)です。