我们的一个Web应用程序长期以来一直存在这个问题。谷歌浏览器会加载所有资源两次,并且出于某种原因在页面上运行所有脚本和其他内容两次。这不可能是因为刷新或重定向,因为开发者控制台并没有在中途清除/重置,如果有什么东西在刷新或重新加载页面,那么它将无限次地发生。这只发生在谷歌浏览器上,这使我们的Web应用程序加载和使用非常缓慢。我分享了一个解决此问题的答案(下面?),因为令人惊讶的是很难找到原因,而且该错误可能会降低性能数百个百分点。
一开始我们以为是一些奇怪的缓存bug,在页面加载期间资源被某种方式过期,但我们找不到任何支持这个理论的东西。
然后在搜索了一番之后,我找到了这篇文章:https://codebuildplay.wordpress.com/2014/03/06/chrome-loads-page-twice-sitecore-dms-gets-faulty-usage-data/
他们发现,如果有元素具有src = ""
或css规则,如url('')
,它会导致Google Chrome认为src或url指的是网站根路径,从而导致页面及其所有资源在那里加载。
对于我们来说,这是一个“扩展版本”问题。我们有一个url =“#”
的问题,这似乎与url =“”
相同。因此,在url或src中使用#
也会产生此错误。
这个问题的根源可以通过观察开发者控制台的网络视图并查找取消的index.php / index.html /类似资源来潜在地找到。请求此资源时的行号应告诉您哪里存在有缺陷的src属性。如果问题存在于css url规则中,则我认为这并不起作用。
我还写了一个小脚本,可以帮助确定具有错误url或src的元素:https://gist.github.com/ahvonenj/8e2eef80590e200dd297
希望这能帮助遇到这个非常恼人且性能破坏问题的人。
在我的情况下,问题通过将有效的图标链接到下面的 href 中解决,尽管我的 html 中还有其他一些空的 href / src(它仍在开发中)。
在 Chrome Android 版本56.0和桌面版上测试通过。
<link rel="icon" href="">
src
属性或只有#
的属性。我不确定为什么您要在这里责怪浏览器,因为它已经做了它应该做的事情。 - Reinstate Monica Cellio