Changeset 211049 in webkit


Ignore:
Timestamp:
Jan 23, 2017, 12:21:40 PM (9 years ago)
Author:
Antti Koivisto
Message:

Use priorities in speculative revalidation
https://bugs.webkit.org/show_bug.cgi?id=167314

Reviewed by Chris Dumez.

We currently do all speculative cache operations with 'Medium' priority
and network operations with 'Low'. We should use the actual request priorities instead.

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:

(WebKit::NetworkCache::constructRevalidationRequest):

Use priority when constructing validation request.

(WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage):

Use priority when retrieving from cache.

(WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry):

  • NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:
  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:

(WebKit::NetworkCache::SubresourceInfo::encode):
(WebKit::NetworkCache::SubresourceInfo::decode):

Save and restore the priority.

  • NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:

(WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
(WebKit::NetworkCache::SubresourceInfo::priority):

Location:
trunk/Source/WebKit2
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r211045 r211049  
     12017-01-23  Antti Koivisto  <antti@apple.com>
     2
     3        Use priorities in speculative revalidation
     4        https://bugs.webkit.org/show_bug.cgi?id=167314
     5
     6        Reviewed by Chris Dumez.
     7
     8        We currently do all speculative cache operations with 'Medium' priority
     9        and network operations with 'Low'. We should use the actual request priorities instead.
     10
     11        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp:
     12        (WebKit::NetworkCache::constructRevalidationRequest):
     13
     14            Use priority when constructing validation request.
     15
     16        (WebKit::NetworkCache::SpeculativeLoadManager::retrieveEntryFromStorage):
     17
     18            Use priority when retrieving from cache.
     19
     20        (WebKit::NetworkCache::SpeculativeLoadManager::preloadEntry):
     21        * NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h:
     22        * NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp:
     23        (WebKit::NetworkCache::SubresourceInfo::encode):
     24        (WebKit::NetworkCache::SubresourceInfo::decode):
     25
     26            Save and restore the priority.
     27
     28        * NetworkProcess/cache/NetworkCacheSubresourcesEntry.h:
     29        (WebKit::NetworkCache::SubresourceInfo::SubresourceInfo):
     30        (WebKit::NetworkCache::SubresourceInfo::priority):
     31
    1322017-01-23  Jer Noble  <jer.noble@apple.com>
    233
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.cpp

    r210364 r211049  
    104104    if (!lastModified.isEmpty())
    105105        revalidationRequest.setHTTPHeaderField(HTTPHeaderName::IfModifiedSince, lastModified);
     106   
     107    revalidationRequest.setPriority(subResourceInfo.priority());
    106108
    107109    return revalidationRequest;
     
    405407}
    406408
    407 void SpeculativeLoadManager::retrieveEntryFromStorage(const Key& key, RetrieveCompletionHandler&& completionHandler)
    408 {
    409     m_storage.retrieve(key, static_cast<unsigned>(ResourceLoadPriority::Medium), [completionHandler = WTFMove(completionHandler)](auto record) {
     409void SpeculativeLoadManager::retrieveEntryFromStorage(const Key& key, ResourceLoadPriority priority, RetrieveCompletionHandler&& completionHandler)
     410{
     411    m_storage.retrieve(key, static_cast<unsigned>(priority), [completionHandler = WTFMove(completionHandler)](auto record) {
    410412        if (!record) {
    411413            completionHandler(nullptr);
     
    488490    if (m_pendingPreloads.contains(key))
    489491        return;
    490 
     492   
    491493    m_pendingPreloads.add(key, nullptr);
    492     retrieveEntryFromStorage(key, [this, key, subResourceInfo, frameID](std::unique_ptr<Entry> entry) {
     494    retrieveEntryFromStorage(key, subResourceInfo.priority(), [this, key, subResourceInfo, frameID](std::unique_ptr<Entry> entry) {
    493495        ASSERT(!m_pendingPreloads.get(key));
    494496        bool removed = m_pendingPreloads.remove(key);
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSpeculativeLoadManager.h

    r210364 r211049  
    6262    void addPreloadedEntry(std::unique_ptr<Entry>, const GlobalFrameID&, std::optional<WebCore::ResourceRequest>&& revalidationRequest = std::nullopt);
    6363    void preloadEntry(const Key&, const SubresourceInfo&, const GlobalFrameID&);
    64     void retrieveEntryFromStorage(const Key&, RetrieveCompletionHandler&&);
     64    void retrieveEntryFromStorage(const Key&, WebCore::ResourceLoadPriority, RetrieveCompletionHandler&&);
    6565    void revalidateEntry(std::unique_ptr<Entry>, const SubresourceInfo&, const GlobalFrameID&);
    6666    bool satisfyPendingRequests(const Key&, Entry*);
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.cpp

    r210835 r211049  
    4545    encoder << m_firstPartyForCookies;
    4646    encoder << m_requestHeaders;
     47    encoder.encodeEnum(m_priority);
    4748}
    4849
     
    6162        return false;
    6263
     64    if (!decoder.decodeEnum(info.m_priority))
     65        return false;
     66   
    6367    return true;
    6468}
  • trunk/Source/WebKit2/NetworkProcess/cache/NetworkCacheSubresourcesEntry.h

    r210502 r211049  
    4848        , m_firstPartyForCookies(isTransient ? WebCore::URL() : request.firstPartyForCookies())
    4949        , m_requestHeaders(isTransient ? WebCore::HTTPHeaderMap() : request.httpHeaderFields())
     50        , m_priority(request.priority())
    5051    {
    5152    }
     
    5455    const WebCore::URL& firstPartyForCookies() const { ASSERT(!m_isTransient); return m_firstPartyForCookies; }
    5556    const WebCore::HTTPHeaderMap& requestHeaders() const { ASSERT(!m_isTransient); return m_requestHeaders; }
     57    WebCore::ResourceLoadPriority priority() const { ASSERT(!m_isTransient); return m_priority; }
    5658
    5759private:
     
    5961    WebCore::URL m_firstPartyForCookies;
    6062    WebCore::HTTPHeaderMap m_requestHeaders;
     63    WebCore::ResourceLoadPriority m_priority;
    6164};
    6265
Note: See TracChangeset for help on using the changeset viewer.