Changeset 249303 in webkit


Ignore:
Timestamp:
Aug 29, 2019 5:17:41 PM (5 years ago)
Author:
commit-queue@webkit.org
Message:

Speculative loads should use the NetworkSession owning their Cache
https://bugs.webkit.org/show_bug.cgi?id=201314

Patch by Alex Christensen <achristensen@webkit.org> on 2019-08-29
Reviewed by Chris Dumez.

This provides a performance improvement when using non-default persistent WKWebsiteDataStores.

  • NetworkProcess/NetworkSession.cpp:

(WebKit::NetworkSession::NetworkSession):

  • NetworkProcess/cache/NetworkCache.cpp:

(WebKit::NetworkCache::Cache::open):
(WebKit::NetworkCache::Cache::Cache):

  • NetworkProcess/cache/NetworkCache.h:

(WebKit::NetworkCache::Cache::sessionID const):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:

(WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):

Location:
trunk/Source/WebKit
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit/ChangeLog

    r249296 r249303  
     12019-08-29  Alex Christensen  <achristensen@webkit.org>
     2
     3        Speculative loads should use the NetworkSession owning their Cache
     4        https://bugs.webkit.org/show_bug.cgi?id=201314
     5
     6        Reviewed by Chris Dumez.
     7
     8        This provides a performance improvement when using non-default persistent WKWebsiteDataStores.
     9
     10        * NetworkProcess/NetworkSession.cpp:
     11        (WebKit::NetworkSession::NetworkSession):
     12        * NetworkProcess/cache/NetworkCache.cpp:
     13        (WebKit::NetworkCache::Cache::open):
     14        (WebKit::NetworkCache::Cache::Cache):
     15        * NetworkProcess/cache/NetworkCache.h:
     16        (WebKit::NetworkCache::Cache::sessionID const):
     17        * NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp:
     18        (WebKit::NetworkCache::SpeculativeLoad::SpeculativeLoad):
     19
    1202019-08-29  Wenson Hsieh  <wenson_hsieh@apple.com>
    221
  • trunk/Source/WebKit/NetworkProcess/NetworkSession.cpp

    r248956 r249303  
    9393            SandboxExtension::consumePermanently(parameters.networkCacheDirectoryExtensionHandle);
    9494
    95         m_cache = NetworkCache::Cache::open(networkProcess, networkCacheDirectory, networkProcess.cacheOptions());
     95        m_cache = NetworkCache::Cache::open(networkProcess, networkCacheDirectory, networkProcess.cacheOptions(), m_sessionID);
    9696        if (!m_cache)
    9797            RELEASE_LOG_ERROR(NetworkCache, "Failed to initialize the WebKit network disk cache");
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.cpp

    r248963 r249303  
    6060}
    6161
    62 RefPtr<Cache> Cache::open(NetworkProcess& networkProcess, const String& cachePath, OptionSet<CacheOption> options)
     62RefPtr<Cache> Cache::open(NetworkProcess& networkProcess, const String& cachePath, OptionSet<CacheOption> options, PAL::SessionID sessionID)
    6363{
    6464    auto storage = Storage::open(cachePath, options.contains(CacheOption::TestingMode) ? Storage::Mode::AvoidRandomness : Storage::Mode::Normal);
     
    6969        return nullptr;
    7070
    71     return adoptRef(*new Cache(networkProcess, storage.releaseNonNull(), options));
     71    return adoptRef(*new Cache(networkProcess, storage.releaseNonNull(), options, sessionID));
    7272}
    7373
     
    7979#endif
    8080
    81 Cache::Cache(NetworkProcess& networkProcess, Ref<Storage>&& storage, OptionSet<CacheOption> options)
     81Cache::Cache(NetworkProcess& networkProcess, Ref<Storage>&& storage, OptionSet<CacheOption> options, PAL::SessionID sessionID)
    8282    : m_storage(WTFMove(storage))
    8383    , m_networkProcess(networkProcess)
     84    , m_sessionID(sessionID)
    8485{
    8586#if ENABLE(NETWORK_CACHE_SPECULATIVE_REVALIDATION)
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCache.h

    r248963 r249303  
    100100class Cache : public RefCounted<Cache> {
    101101public:
    102     static RefPtr<Cache> open(NetworkProcess&, const String& cachePath, OptionSet<CacheOption>);
     102    static RefPtr<Cache> open(NetworkProcess&, const String& cachePath, OptionSet<CacheOption>, PAL::SessionID);
    103103
    104104    void setCapacity(size_t);
     
    147147
    148148    NetworkProcess& networkProcess() { return m_networkProcess.get(); }
     149    const PAL::SessionID& sessionID() const { return m_sessionID; }
    149150
    150151    ~Cache();
    151152
    152153private:
    153     Cache(NetworkProcess&, Ref<Storage>&&, OptionSet<CacheOption>);
     154    Cache(NetworkProcess&, Ref<Storage>&&, OptionSet<CacheOption>, PAL::SessionID);
    154155
    155156    Key makeCacheKey(const WebCore::ResourceRequest&);
     
    171172
    172173    unsigned m_traverseCount { 0 };
     174    PAL::SessionID m_sessionID;
    173175};
    174176
  • trunk/Source/WebKit/NetworkProcess/cache/NetworkCacheSpeculativeLoad.cpp

    r248846 r249303  
    5353    ASSERT(!m_cacheEntry || m_cacheEntry->needsValidation());
    5454
    55     NetworkLoadParameters parameters { PAL::SessionID::defaultSessionID() };
     55    NetworkLoadParameters parameters { cache.sessionID() };
    5656    parameters.webPageID = globalFrameID.first;
    5757    parameters.webFrameID = globalFrameID.second;
     
    6060    parameters.contentEncodingSniffingPolicy = ContentEncodingSniffingPolicy::Sniff;
    6161    parameters.request = m_originalRequest;
    62     m_networkLoad = makeUnique<NetworkLoad>(*this, nullptr, WTFMove(parameters), *cache.networkProcess().networkSession(PAL::SessionID::defaultSessionID()));
     62    m_networkLoad = makeUnique<NetworkLoad>(*this, nullptr, WTFMove(parameters), *cache.networkProcess().networkSession(cache.sessionID()));
    6363}
    6464
     
    7474    Optional<Seconds> maxAgeCap;
    7575#if ENABLE(RESOURCE_LOAD_STATISTICS)
    76     if (auto* networkStorageSession = m_cache->networkProcess().storageSession(PAL::SessionID::defaultSessionID()))
     76    if (auto* networkStorageSession = m_cache->networkProcess().storageSession(m_cache->sessionID()))
    7777        maxAgeCap = networkStorageSession->maxAgeCacheCap(request);
    7878#endif
Note: See TracChangeset for help on using the changeset viewer.