我使用 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中预加载的资源吗?
如果您发出无法与预加载数据一起使用的获取请求(标头列表不为空):
fetch('/api/GetUserData', {
headers: {
"Accept": "application/json"
}
});
它会导致移动 Safari 刷新缓存。在后续页面加载时,会再次获取预加载请求。