是否可以在移动 Safari 中刷新预加载的 JSON?

问题描述 投票:0回答:1

我使用 HTTP header Link 来加速页面上用户数据的加载:

Link: </api/GetUserData>; rel="preload"; as="fetch"

当用户数据发生变化时,我需要通过

fetch
再次加载数据。这在 Chrome 中工作正常,但 iOS Safari (17.6.1) 会缓存响应并始终使用预加载的版本,即使在新的全页面刷新时也是如此。我尝试过通过 HTTP 标头禁用缓存:

Cache-Control=no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0
Pragma=no-cache

但这并不能阻止移动 Safari 缓存该资源。我现在看到的唯一解决方案是在每次页面加载时更改预加载资源的 URL。 还有其他方法可以检索新的用户数据吗?

有什么方法可以刷新手机Safari中预加载的资源吗?

http-headers pagespeed cache-control preload preloading
1个回答
0
投票

如果您发出无法与预加载数据一起使用的获取请求(标头列表不为空):

fetch('/api/GetUserData', {
    headers: {
        "Accept": "application/json"
    }
});

它会导致移动 Safari 刷新缓存。在后续页面加载时,会再次获取预加载请求。

© www.soinside.com 2019 - 2024. All rights reserved.