我目前正在使用 nextJS (with react) 并且它工作得很好。我还使用数据预取链接来预取应用程序中的链接,它工作得很棒。
我需要预取几个使用 nextJs 创建但作为单独应用程序运行的页面。我尝试使用 rel=prefetch / rel=next 标签,这些标签在 chrome 和 firefox 上运行良好,但看起来 safari 不支持预取标签。
然后我尝试使用npmjs 包,但即使这样也不能强制 safari 使用磁盘缓存中的页面。有趣的是,我可以在 safari 的网络选项卡中看到预取(通过 fetch)调用(在页面加载时),但是当我单击目标 html 链接时,它仍然从网络而不是从磁盘缓存获取数据。
我还尝试使用服务工作人员缓存 api 方法来查看这是否会强制 safari 从缓存中呈现页面,我可以看到 fetch 调用正在发生,但是当我单击目标 URL 时,safari 没有使用缓存中的数据。
render(){
const cacheName = 'testcache';
const deviceURL = this.props.device.PDPPageURL.toString().replace(/^.*\.com/g, "");
if(typeof(window) !== 'undefined' && window){
if ('caches' in window) {
caches.open(cacheName).then(cache => {
cache.add(deviceURL).then(() => {
console.log('\n Apple urls Added to cache ');
});
});
}
是否有一种解决方法可以在所有浏览器中实现此要求?