NEW 193533
Preloaded content is always retrieved from cache
https://bugs.webkit.org/show_bug.cgi?id=193533
Summary Preloaded content is always retrieved from cache
Oliver Joseph Ash
Reported 2019-01-17 05:33:10 PST
Created attachment 359368 [details] Reproducer If a request is preloaded, Safari will always retrieve it from the cache, regardless of the cache headers for that request. Attached an example. This is the same as https://bugs.webkit.org/show_bug.cgi?id=187726, but more general in scope—the bug is not specific to the "Disable Cache" feature in the web inspector.
Attachments
Reproducer (9.11 KB, application/zip)
2019-01-17 05:33 PST, Oliver Joseph Ash
no flags
Screenshot (175.74 KB, image/png)
2019-01-17 05:35 PST, Oliver Joseph Ash
no flags
Reproducer 2 (10.15 KB, application/zip)
2019-01-18 01:41 PST, Oliver Joseph Ash
no flags
Oliver Joseph Ash
Comment 1 2019-01-17 05:35:31 PST
Created attachment 359369 [details] Screenshot
Radar WebKit Bug Importer
Comment 2 2019-01-17 08:43:04 PST
Oliver Joseph Ash
Comment 3 2019-01-18 01:41:39 PST
Created attachment 359462 [details] Reproducer 2 I've improved the test case and included steps to reproduce in the README.md.
Sergio Mattei
Comment 4 2023-02-17 17:19:05 PST
This is a huge blocker for web development on Safari. This bug completely breaks the NextJS dev cycle. Are there any updates on this? It's very odd to enable "Disable Caches" and the browser to completely ignore my setting.
Hannes Ljungberg
Comment 5 2024-09-30 10:43:32 PDT
Encountered this issue today with Safari (Version 18.0 (19619.1.26.111.10, 19619)). Usage: <link rel="preload" href="https://example.com/foo" as="fetch" crossorigin="anonymous" /> Server responds with: Cache-Control: no-cache Etag: barbaz Now, when reloading I would expect Safari to send a HTTP request with "If-None-Match: barbaz" but instead it caches the response indefinitely(?) and serves it from "Memory Cache" with no HTTP requests hitting the server. Both Firefox (130.0.1) and Chrome (129.0.6668.70) behaves as expected. My use-case requires all cached preloaded requests to be revalidated with a "If-None-Match" before usage and since Safari ignores the directive to revalidate I have to opt-out of using this optimisation altogether.
Note You need to log in before you can comment on or make changes to this bug.