今天发现nginx在修改过json文件后用ajax加载发现出现ERR_EMPTY_RESPONSE的错误,
查看日志显示

2019/09/10 8:44:47 [alert] 9743#0: *192873 pread() read only 1237 of 1240 from "/var/www/website.com/test.json"

Google了一下发现是因为Nginx会缓存静态文件的元信息,nginx.conf设置中为

  open_file_cache max=1000 inactive=20s;
  open_file_cache_valid 30s;
  open_file_cache_min_uses 2;

设置的意思是最大缓存1000个文件,20s内如果文件被使用少于2次就删除缓存,30s内更新缓存。

所以导致我刚修改完文件后,读取时由于缓存的元信息和文件不一致,倒是出错。
解决办法在conf文件中加入

  location ~ .*\.(json)$
  {
    open_file_cache off;
  }

关闭json文件的缓存功能。
重启nginx,问题解决。

上一篇: Codeigniter3中Ion_auth记住用户功能的小坑
下一篇: flutter调试卡在Installing build\app\outputs\apk\app.apk