问题描述

这两天调试一个nginx配置的问题,一开始一直以为是nginx的缓存配置的问题,我反复的翻阅nginx的配置文档,实在找不出配置有啥问题。

于是打开chrome的开发者工具,发现相关请求一直报301 Moved Permanently (from disk cache),一开始没有留意,因为我已经开启了 打开开发者工具就禁用缓存的选项,我反复检查nginx的配置,再检查nginx的日志,反复确认没有问题后,我开始怀疑是chrome的问题, 也就是说,请求并没有发送给nginx,而是chrome直接响应了请求,把磁盘缓存中的内容直接返回给了浏览器。

问题解决

既然怀疑是chrome的问题,那怎么解决呢。最简单的方法就是清空chrome的缓存了。 选择设置,然后搜索清除浏览数据,然后点击高亮显示的内容,按照提示进行清理即可。

清理完缓存之后,再次进行测试,发现果然不是nginx配置的问题,请求返回了期待已久的结果。

问题发散

从上面的情况来看,开发者工具里面的Disable cache(while DevTools is open)的选项对于返回结果为301的请求无效。 那么有没有办法避免再次遇到同样的问题呢?google一下,可能的方法如下:

  • 在服务器端控制,对于返回代码为301的请求,添加缓存控制;
  • 在浏览器端控制,不缓存返回代码为301的请求,而是再次获取请求的页面;