我有一个并不总是在Safari中呈现的页面。它显示为空白页面。如果我查看活动窗口,我会在加载的资源列表中看到几个 about:blank 的实例。
只需刷新页面即可解决问题。
这可以非常可靠地复制,并且只影响Safari。
有没有人见过这个?
答案 0 :(得分:1)
我有同样的问题,谷歌Chrome也会出现。也许是Webkit相关的问题?查看页面源显示源已正确加载,但在我的情况下,内容div不会被呈现。当我尝试检查元素时,div显示出来。错误控制台什么都不显我正试图想出一个解决方案,如果我成功,我会报告。
编辑:解决了!
您的页面是否动态生成?我发现,如果发送了Content-Length标头,但Chrome和Safari可能无法正确呈现页面,但其值不正确。我没有明确发送标题,但是我们正在使用带有自定义前端的WordPress后端,并包含发送标头的wp-blog-header.php。我将其切换到wp-load.php以防止发送不必要的标头。
除此之外,两种浏览器都限制了在开始渲染之前需要接收的数据量。 Safari的阈值似乎约为1 KB,Chrome约为2 KB。我的页面比这长,但我怀疑缓存是问题持续存在的原因。
我试着在页面末尾刷新,但问题只有在我开始使用用户空间输出缓冲时才完全解决(并决定在我使用时使用自动压缩)。现在我的页面形式为:
<?php ob_start('ob_gzhandler'); ?>
<!-- Static and dynamically generated content -->
<?php ob_end_flush(); flush(); ?>
并且,在清理了Safari的缓存之后,我摆脱了渲染问题!
答案 1 :(得分:1)
<强>解决强>
原来问题是对页面的控制,该控件生成Javascript以在此项目的两个相关站点之间创建跨站点cookie。 Safari对拒绝创建跨站点cookie的尝试非常严格,这似乎是由此产生的行为。
一旦我删除了控件,页面就会在Safari中一致地呈现。