我最近在Rails应用程序堆栈中添加了一个Varnish实例。 Varnish在其默认配置下可以使用Cache-Control头来阻止缓存某个资源,如下所示:
Cache-Control: max-age=86400, public=true
我在控制器中使用expires_in语句来实现这个功能:
def index
expires_in 24.hours, public: true
respond_with 'some content'
end
这个方法很有效。但我没有预料到Cache-Control头文件也会影响浏览器。这导致了一个问题,即Varnish和用户的浏览器都缓存了某个资源。该资源从Varnish中正确地清除,但是浏览器不会尝试再次请求它,除非到达max-age。
因此,我想知道是否应该完全使用'expires_in'和Varnish的组合?我可以在Varnish前端的Nginx或Apache实例中过滤Cache-Control头文件,但这似乎很奇怪。
有人能够启示我吗?
问候 Felix