使用window.location.href、.assign或.reload时等待时间较长。

11

在更新内容后,我正在使用JavaScript重定向。我尝试了以下方法,但速度都非常慢。在网络选项卡中,等待时间约为4.445秒。(对客户来说非常沮丧 :( )

window.location.assign(to_redirect);
window.location.replace(to_redirect);
location.href= to_redirect; 
window.location.href= to_redirect; 
window.location = to_redirect; 

当以鼠标点击的方式浏览网站时,等待时间为350ms450ms

为什么会这样?我有没有漏掉什么或者有没有更快的方法?

更新:

按照评论者的要求,以下是屏幕截图。

通过页面链接进行点击,正常方式。

enter image description here

保存数据并使用JavaScript重定向后。

enter image description here


2
TTFB值代表“首字节时间”。这是它等待服务器发送响应的第一个字节的时间。看起来你的问题是在服务器端,也就是说,是发生在服务器上导致了这种延迟。 - jlh
如果重定向的URL是同一域名下的一部分,则可以尝试通过提供引荐URL而不是在ajax调用后提供完整的URL来实现。 例如,可以将"redirect('https://www.example.com/media/')"替换为"redirect('/media/')"。这样或许可以减少页面的加载时间。 - Umesh Chaurasiya
另外,通过查看第二张截图,似乎您的页面有一个mp4视频需要大约4秒钟才能下载。而且在第一张截图中没有显示。如果视频很大,很可能会影响页面加载时间。 - Umesh Chaurasiya
我已经尝试了之前评论中提到的相对URL。至于视频,那不是问题,因为它来自上一页。而突出显示的部分是需要考虑的重定向。 - shyammakwana.me
1
也许一个链接可以触发浏览器预取,一个隐藏的链接可以测试这个功能,而<meta http-equiv="Link" content="</images/big.jpeg>; rel=prefetch">则可以启用预取。尝试使用$('#link').click()来替换location.href。让您的服务更快是更重要的,3秒钟相当长,保持连接/缓存/CDN/HTTP2/后端逻辑的优化。 - Josh Lin
显示剩余10条评论
2个回答

0

我已经尝试了所有评论中提供的解决方案,感谢大家。 根据@YanjunLin的评论,我尝试直接使用jQuery点击元素,而不是基于window对象的重定向。这样做起作用了。

然而,对于我的应用程序,点击方法比其他方法快60-70%。

未来任何人都可以尝试元素点击($('element selector').click())方法,希望这个方法也适用于你。

请注意,它取决于您的应用程序架构。可能发生Window.location.reload/assign等更快的情况适用于您的应用程序。但您可以尝试此解决方案。

更新:

根据评论{{link1:prefetching}},如果您有许多静态资产需要在每个页面加载时加载,则也可以考虑因素。


0

我相信你的网站正在遭受 Web 服务器缓存的困扰。你可以尝试通过 META 标签来更改缓存设置,但是这样会失去缓存带来的优势。我有一个简单的小技巧,通常在所有情况下都有所帮助:在提交的 URL 中添加时间戳,使其唯一。例如:my_app.php?ts=1503710749

这个唯一标识符应该会立即引起 Web 服务器的处理。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接