做一个文字直播的项目,为了减轻数据库及web服务器负载,做了以下处理:
复制代码代码如下:
location ~ ^/zhibo/.*\.(html)$ {
root /data/www; expires 30s; }
这个配置将发送一个header:Cache-Control:max-age=30 但是并没有得到想要的结果(没有经过CDN的情况):发现30s后,服务器还是返回304,发现返回的header里Last-Modified一直不变,大概30秒后,再去刷新Last-Modified和页面才有变化。去服务器上看静态文件的更新时间是刚刚更新的。为什么客户端看到的是比较旧的页面呢。
打开nginx.conf逐个检查,发现这么一些配置:
复制代码代码如下:
open_file_cache max=102400 inactive=20s;
open_file_cache_valid 30s; open_file_cache_min_uses 1;
这几个指令的解释: 这下明白了为什么会产生Last-Modified不变的情况了,当nginx对一个静态文件缓存后,如果20s内你还在访问它,那么它的缓存就一直存在。直到20s内你不访问了为止。
另外,还出现了页面显示不全的情况,分析如下: |