diff --git a/Userland/Libraries/LibWeb/Loader/Resource.cpp b/Userland/Libraries/LibWeb/Loader/Resource.cpp index d922546e887..66827564805 100644 --- a/Userland/Libraries/LibWeb/Loader/Resource.cpp +++ b/Userland/Libraries/LibWeb/Loader/Resource.cpp @@ -11,6 +11,7 @@ #include #include #include +#include namespace Web { @@ -39,6 +40,7 @@ Resource::Resource(Type type, Resource& resource) , m_response_headers(move(resource.m_response_headers)) , m_status_code(move(resource.m_status_code)) { + ResourceLoader::the().evict_from_cache(m_request); } Resource::~Resource() = default; diff --git a/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp b/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp index 9515005d604..e03d7fc0ca1 100644 --- a/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp +++ b/Userland/Libraries/LibWeb/Loader/ResourceLoader.cpp @@ -280,4 +280,10 @@ void ResourceLoader::clear_cache() s_resource_cache.clear(); } +void ResourceLoader::evict_from_cache(LoadRequest const& request) +{ + dbgln_if(CACHE_DEBUG, "Removing resource {} from cache", request.url()); + s_resource_cache.remove(request); +} + } diff --git a/Userland/Libraries/LibWeb/Loader/ResourceLoader.h b/Userland/Libraries/LibWeb/Loader/ResourceLoader.h index 8423f678afa..4d31d9f9f38 100644 --- a/Userland/Libraries/LibWeb/Loader/ResourceLoader.h +++ b/Userland/Libraries/LibWeb/Loader/ResourceLoader.h @@ -50,6 +50,7 @@ public: void set_user_agent(const String& user_agent) { m_user_agent = user_agent; } void clear_cache(); + void evict_from_cache(LoadRequest const&); private: ResourceLoader(NonnullRefPtr protocol_client);