Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: dd94c05bda9feb78204d5603a55c8bc4309a1608
      
https://github.com/WebKit/WebKit/commit/dd94c05bda9feb78204d5603a55c8bc4309a1608
  Author: Ben Nham <[email protected]>
  Date:   2026-01-07 (Wed, 07 Jan 2026)

  Changed paths:
    M Source/WTF/wtf/PlatformEnableCocoa.h
    M Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp
    M Source/WebKit/NetworkProcess/cache/NetworkCache.cpp
    M Source/WebKit/NetworkProcess/cache/NetworkCacheBlobStorage.cpp
    M Source/WebKit/NetworkProcess/cache/NetworkCacheBlobStorage.h
    M Source/WebKit/NetworkProcess/cache/NetworkCacheData.cpp
    M Source/WebKit/NetworkProcess/cache/NetworkCacheData.h
    M Source/WebKit/NetworkProcess/cache/NetworkCacheDataCocoa.mm
    M Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp
    M Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h
    M Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadDelegate.h
    M Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadDelegate.mm

  Log Message:
  -----------
  Add memory cache for recently loaded top resources in NetworkProcess
https://bugs.webkit.org/show_bug.cgi?id=305003
rdar://167643978

Reviewed by Per Arne Vollan.

This adds a small memory cache for recently loaded top resource data in 
NetworkProcess. This is a
~0.5% PLT win. This does not test as a memory regression, as the resource data 
we're holding on to
is clean file-backed memory.

This is currently disabled by default as we will enable it in conjunction with 
a future change
(`blobStorageMemoryCacheFileLimit = 0` in this patch).

To test this in an API test, I made a change to _WKResourceLoadDelegate to have 
its didComplete
delegate callback fire when a cached resource is loaded. This delegate only has 
a couple of clients
and this change shouldn't affect those clients.

After talking to Alex about the _WKResourceLoadDelegate, it seems like in the 
long term we should
either remove the delegate or greatly simplify it for the needs of the 
remaining clients, which
we'll track in rdar://167643536.

Test: Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadDelegate.mm
* Source/WTF/wtf/PlatformEnableCocoa.h:
* Source/WebKit/NetworkProcess/NetworkResourceLoader.cpp:
(WebKit::NetworkResourceLoader::sendResultForCacheEntry):
* Source/WebKit/NetworkProcess/cache/NetworkCache.cpp:
(WebKit::NetworkCache::Cache::store):
(WebKit::NetworkCache::Cache::update):
* Source/WebKit/NetworkProcess/cache/NetworkCacheBlobStorage.cpp:
(WebKit::NetworkCache::copyBlob):
(WebKit::NetworkCache::BlobStorage::MemoryCache::get):
(WebKit::NetworkCache::BlobStorage::MemoryCache::add):
(WebKit::NetworkCache::BlobStorage::MemoryCache::remove):
(WebKit::NetworkCache::BlobStorage::BlobStorage):
(WebKit::NetworkCache::BlobStorage::synchronize):
(WebKit::NetworkCache::BlobStorage::add):
(WebKit::NetworkCache::BlobStorage::get):
(WebKit::NetworkCache::BlobStorage::remove):
* Source/WebKit/NetworkProcess/cache/NetworkCacheBlobStorage.h:
(WebKit::NetworkCache::BlobStorage::MemoryCache::MemoryCache):
* Source/WebKit/NetworkProcess/cache/NetworkCacheData.cpp:
* Source/WebKit/NetworkProcess/cache/NetworkCacheData.h:
* Source/WebKit/NetworkProcess/cache/NetworkCacheDataCocoa.mm:
(WebKit::NetworkCache::Data::copyData const):
* Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.cpp:
(WebKit::NetworkCache::Storage::WriteOperation::WriteOperation):
(WebKit::NetworkCache::Storage::WriteOperation::storeBlobInMemoryCache const):
(WebKit::NetworkCache::Storage::Storage):
(WebKit::NetworkCache::Storage::storeBodyAsBlob):
(WebKit::NetworkCache::Storage::dispatchWriteOperation):
(WebKit::NetworkCache::Storage::store):
* Source/WebKit/NetworkProcess/cache/NetworkCacheStorage.h:
* Source/WebKit/UIProcess/API/Cocoa/_WKResourceLoadDelegate.h:
* Tools/TestWebKitAPI/Tests/WebKitCocoa/ResourceLoadDelegate.mm:
(LoadTopResourceFromCache)):

Canonical link: https://commits.webkit.org/305234@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to