iPhone Safari 刷新后出现空白页解决方案

  • 约339字
  • 技术
  • 2012年12月22日

这几天在做一个新网站,发现用 iPhone 的 Safari 浏览页面时,初次浏览页面都没有问题,但当手动点击刷新按钮,整个页面就变成白页。

先百度和 google 了一下,发现相关的结果不够解决问题。于是自己研究了一下,空白页出现有下面几个特征:

  • 不刷新页面,点击链接页面都正常
  • 刷新页面后出现空白页
  • 修改页面代码,比如加一个空格,再刷新恢复正常

页面没有修改返回的是 304,加一个空格后返回 200,看来问题就在这里。Safari 在手动刷新时没有正确处理 304 的结果(非手动刷新正常),chrome 和 IE 都没有此问题,看来应该是 safari 的 bug。解决此问题,临时解决方案只能是让服务器不返回 304,于是想到重置  Last-Modified 和  If-None-Match 。

我正在开发的网站用的是 nodejs & Express,针对我遇到的情况,简单的解决方案如下:

app.get("*", function (req, res, next) {
  var ua = req.header("user-agent");
  if (ua && ua.match(/safari/i)) {
    req.headers["if-none-match"] = undefined;
  }
  next();
});
标签 :

相关文章

尝试移动应用开发(React Native)

从第一次尝试网站开发到现在,马上就15个年头了。还记得第一次上网是在新世纪的第一年,当时互联网远没有现在火。但当我走进机房打开第一个网页就感觉太神奇了,全世界的人都可以通过一个网址找到你,从那时起就开始了十几年的互联网征程。

查看更多

Docker 入门这5个坑,踩过的人都知道

初次接触 Docker 时,你是否也曾被镜像太大、构建卡死、网络不通这些问题折磨过?本文总结5个Docker入门常见坑,配上具体解决思路,帮助新手绕过这些雷区。

查看更多

如何更高效的完成 API 联调

在日常开发工作中,离不开各种联调工作,包括 Web 前后端联调、后端服务之间的联调。API 是应用程序之间沟通的桥梁,联调则是 API 提供者和 API 使用者一起完成这座桥梁安装和调试的过程。

查看更多