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