iOS Safari not rendering the complete page from the first time
除了第一次在Safari Mobile(或窄屏幕上的Safari Mac)中打开外,我们的网站在所有浏览器和设备上都表现良好。
网址:http://sheriff.org/
在iPhone Safari上复制:
以私人模式打开网站
刷新页面
在Mac Safari上复制:
以私人模式打开Safari
将用户代理切换到iOS-iPhone(开发>用户代理>Safari--iOS--iPhone)
调整浏览器的大小,使其近似于移动设备的宽度
打开网站
刷新页面
预期:页面应第一次和第二次呈现相同的内容
实际情况:在私人模式下,第一次只能看到一个绿色框第二次,页面完全呈现
调查结果:我尝试比较两个页面(当渲染正确时,以及渲染中断时),以查看是否有任何差异,以发现在这两种情况下,页面具有完全相同的HTML&CSS。
如果检查第一次尝试时没有显示的任何元素(在页面刷新后应该正确呈现),您将找不到任何影响元素可见性的样式(如opacity、display、visibility、position等)。
更新:似乎是Safari控制台Unhandled Promise Rejection: [object DOMError]中的错误导致了这个问题,我做了一项研究,发现这可能是由于在页面上自动播放视频(页面上确实有视频,但即使抛出此错误,视频也会播放),所以我认为引发此错误的原因应该是另一个。
任何关于我们为什么在狩猎中看到这种行为的建议都会受到高度赞赏。
- 你好。我可以在手机上复制,但不能在Mac OS Sierra 10.12上模拟iPhone Safari——不过,这可能是iOS 11的东西。这里发生了很多事情,我有6个JS错误,这一点都不好:/
- JS错误不应影响,它们将出现在这两种情况下,即当问题被复制时,以及当问题不被复制时。
- 但是,这个错误很可能与JS相关,所以您也应该研究一下它。这可能是由于某种类型的超时或触发尚未加载的DOM元素导致的-而在第二次,文件被缓存以便加载。
- 在我的Mac上运行Safari 11,无论屏幕宽度如何,第一次加载时页面都无法正确加载。我同意@scooterlord您需要修复JS错误
- 我同意你们的看法,这可能是原因,请查看我上面发布的更新。
- 我已经让这个网站开放了2分钟,它把6250万的资产转移到了我的浏览器上。其中大约30毫巴是在前30秒内。不管是否相关,这对您的移动用户来说是一个更大的问题。
- 我同意Hellojason的观点,这里(所有浏览器)存在的问题比在Safari中正确渲染要大得多。大量的数据被传输,你会认为整个网站正在被缓存,但是我点击了其中一个主要的导航链接,希望它能立即加载,但是没有,浏览器刷新了,被迫坐在那里等待,同时下载了更多的数据。上漆时间为10-15-20秒。就我个人而言,对于我自己的公司网站来说,5秒的加载时间是可怕的,我已经把它降到了1秒。
你的网站充满了问题,正如其他一些评论员所指出的,有些问题是由于主页的大小荒谬地大,导致一些网站资产在你想要加载它们时无法加载,因为一些大型外部脚本在你的CSS加载之前正在加载。有问题的CSS在"第二次"尝试时加载的原因是,CSS被缓存…最终(在加载了您在请求的几十个CSS文件之一之前请求的几十个javascript中的一个之后)并将在随后的加载中正确地部署CSS(只要您确实允许足够的时间和带宽加载pag)第一次)。
我想马上给你很多建议,但要与你的职位保持联系:
确保在页面头部的任何javascripts之前调用CSS。
考虑取消大约90%的脚本,这些脚本对你的网站是不必要的,因为很少有人有耐心在浏览你的网站之前加载这么多的数据,尤其是在相对缓慢的移动浏览器上。
查看Chrome控制台中的所有错误(在Google Chrome中右键单击您的页面并单击"检查",然后查看"控制台"选项卡…您的站点有许多错误。如果您希望您的网站符合标准,并且更可能被搜索引擎抓取,则必须修复这些问题。
在谷歌的洞察页面上看看你的网站:https://developers.google.com/speed/pagespeed/insidences/?url=http%3a%2f%2fwww.sheriff.org%2fpages%2fhome.aspx
祝你好运!
- 关于为什么以及是否把CSS链接放在脚本链接之前的更多信息,这里有很多很好的答案:stackoverflow.com/questions/9271276/…