我注意到在我的生产环境中(我已经实现了memcached)在firebug中看到了一个cache-control-max-age标头,只要我在查看索引页面(例如帖子)。
Cache-Control max-age=315360000
在我的开发环境中,标题如下所示。
Cache-Contro private, max-age=0, must-revalidate
据我所知,我没有对我的nginx.conf文件做任何特别的事情来指定常规内容的最大年龄,我确实为css,jpg等设置了expires-max。这里是我的nginx.conf文件..
那为什么要设置缓存控制呢?如何控制此缓存控制,因为这样做的副作用有点不好。这就是发生的事情。
1 - 用户请求all_posts列表并获取10个页面的列表(分页)
2 - 创建用户视图页面1,2 3和相应的缓存。
3 - 用户返回第1页,firefox甚至没有向服务器发出请求。通常我会期望它会重新获得并点击步骤#2中创建的缓存。
另一个问题是,如果创建了一个新帖子,现在缓存已刷新并且它应位于第1页的顶部,则用户无法看到它...因为浏览器没有访问服务器
请帮忙!
由于
更新:
我尝试在我的索引操作中设置expires_now。没有差别,max-age仍然是相同的大值。
这可能是我的max-age正则表达式的问题吗?我基本上希望它只匹配资产文件(图像,js,css等)
答案 0 :(得分:0)
我认为你的max-age正则表达式存在问题,这是正确的。
您正在匹配此模式:^.+.(jpg|jpeg|gif|png|css|js|swf)?([0-9]+)?$
因为在两个带括号的部分后面都有问号(“这部分是可选的”),所以正则表达式的唯一必要部分是请求URI至少有两个字符(.+.
)。换句话说,它几乎匹配到您网站的每个请求。
这是我们使用的模式:\.(js|css|jpg|jpeg|gif|png|swf)$
这将仅匹配以点结尾的路径的请求,然后匹配这七种模式中的一种。