[Website] Fix Safari PWA cache failures by stripping Range headers#3200
Merged
[Website] Fix Safari PWA cache failures by stripping Range headers#3200
Conversation
Safari sometimes adds Range headers to asset requests in PWA contexts, causing servers to return 206 Partial Content responses. These partial responses can't be cached using the Cache API's .put() method, leading to cache failures. This appears to be related to intermittent Safari issues where the PWA fails to load after deployments, displaying blank pages even though the assets are accessible. While the root cause is difficult to reproduce outside production, stripping Range headers ensures full 200 OK responses that cache correctly. The fix creates a new Request without the Range header before fetching, allowing the cacheFirstFetch strategy to work properly across all browsers.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This is a potential fix for intermittent Safari PWA failures after deployments where the site displays a blank page until the cache is manually cleared.
Theory: Safari sometimes adds
Rangeheaders to asset requests, causing servers to return206 Partial Contentresponses. These partial responses fail when usingCache.put()because the Cache API requires complete responses.The Problem
After deploying playground.wordpress.net, Safari users sometimes experience:
main.jsare accessibleThe Fix
Strip the
Rangeheader from requests before fetching incacheFirstFetch(). This ensures:200 OKwith complete responses instead of206 Partial ContentCache.put()Important Note
This is a best-guess fix since the issue is not easily reproducible outside the deployed production environment. The Safari-specific behavior with Range headers in PWA contexts is well-documented, and this fix addresses that known issue. However, the root cause of the blank page problem may be more complex.
Testing
The change is defensive and shouldn't affect normal operation: