nginx open_file_cache指令影响静态文件更新时间
2024-09-30 04:33:52
有这样的需求,客户上传图片,覆盖以前的图片,因为客户可能会频繁的换图片,上传覆盖完后,页面会自动请求刚才的图片,图片已经换掉,但是url并没有换,因为图片名字没改。
因为更新的图要及时显示所以这个目录里的图片过期时间是
location ~ .*\path\.(jpg|png|jpeg)$
{
expires ;
}
但是并没有出现更新,浏览器依然会用本地的缓存。
抓包发现,浏览器发现图片过期并发送了请求带有If-Modified-Since,得到的是304且Last-Modified时间没变,也就是说nginx说此图片没有更改,浏览器就用本地缓存了。但是通过stat命令发现此图片modify时间已经变化,确实更改了。
超找原因,发现是open_file_cache选项,open_file_cache max=102400 inactive=20s;
open_file_cache 指令会对以下信息进行缓存:
* 打开文件描述符的文件大小和修改时间信息
* 存在的目录信息
* 搜索文件的错误信息:文件不存在无权限读取等信息
max指定缓存数量 inactive是指经过多长时间文件没被请求后删除缓存。我指定了20s,所以等到至少20s不访问这个文件,相应缓存的这个文件的更改信息才会被删除。
open_file_cache_valid 30s;
#这个是指多长时间检查一次缓存的有效信息。也就是说即使我一直访问这个文件,30s后会检查此文件的更改信息是否变化,发现变化就更新。
open_file_cache_min_uses 1;
#指令中的inactive参数时间内文件的最少使用次数,如果超过这个数字,文件更改信息一直是在缓存中打开的。
最新文章
- WebBrowser处理AJAX生成的网页内容!
- C#爬页面总结
- SQL注入原理小结
- Vue.2.0.5-单文件组件
- C#代码开发规范
- 向Array中添加归并排序
- 用Shell实现俄罗斯方块代码(Tetris.sh)
- Fiddler对安卓应用手机抓包图文教程
- 1057 - Collecting Gold (状态压缩DP)
- LeetCode——Pascal's Triangle
- lightoj 1038 Race to 1 Again
- 考试easy该,学习如何做?
- 项目管理实践教程一、工欲善其事,必先利其器【Basic Tools】
- [python爬虫]Requests-BeautifulSoup-Re库方案--robots协议与Requests库实战
- 阿里云RDS读写分离数据查询延迟解决
- [LeetCode] 112. Path Sum ☆(二叉树是否有一条路径的sum等于给定的数)
- JTable 查询
- 【贪心算法】POJ-2376 区间问题
- nodejs 剪切图像在上传,并保存到指定路径下(./public/img/' + req.session.token + '.jpg‘)
- 如何在service实现弹出对话框