Rails 与 Alchemy - 正确设置 Cache-Control header
Rails with Alchemy - properly set Cache-Control header
我有一个带有 Devise 和 Alchemy CMS 的应用程序,当我登录时,登录按钮应该更改为注销,但事实并非如此。我认为启用了 HTTP 缓存。如果我注销,我会被重定向到主页,并且在请求 header 中我可以看到:
/users/sign_out
Status Code: 302
cache-control:no-cache
但是如果我转到另一个页面,按钮仍然显示“注销”。
如果我刷新主页,我会在 header:
中看到这个
/
Request Method:GET
Status Code:200 (from disk cache)
cache-control:public
last-modified:Mon, 17 Dec 2018 19:32:08 GMT
如果我登录并转到另一个页面,按钮会显示“登录”。在 header 我看到这个:
/some/other/url
Request Method:GET
Status Code:200 (from disk cache)
cache-control:public
last-modified:Mon, 17 Dec 2018 19:32:08 GMT
有什么办法可以解决这个问题吗?
我必须升级到 4.0-stable,它将 must_revalidate
添加到 headers 并覆盖 render_fresh_page?
方法 https://github.com/AlchemyCMS/alchemy_cms/blob/4.0-stable/app/controllers/alchemy/pages_controller.rb#L192
看起来像这样:
app/controllers/alchemy/pages_controller_extension.rb
Alchemy::PagesController.class_eval do
def render_fresh_page?
flash.present? || !@page.cache_page? || stale?(etag: page_etag,
last_modified: @page.published_at,
public: !@page.restricted,
template: 'pages/show')
end
end
我有一个带有 Devise 和 Alchemy CMS 的应用程序,当我登录时,登录按钮应该更改为注销,但事实并非如此。我认为启用了 HTTP 缓存。如果我注销,我会被重定向到主页,并且在请求 header 中我可以看到:
/users/sign_out
Status Code: 302
cache-control:no-cache
但是如果我转到另一个页面,按钮仍然显示“注销”。 如果我刷新主页,我会在 header:
中看到这个/
Request Method:GET
Status Code:200 (from disk cache)
cache-control:public
last-modified:Mon, 17 Dec 2018 19:32:08 GMT
如果我登录并转到另一个页面,按钮会显示“登录”。在 header 我看到这个:
/some/other/url
Request Method:GET
Status Code:200 (from disk cache)
cache-control:public
last-modified:Mon, 17 Dec 2018 19:32:08 GMT
有什么办法可以解决这个问题吗?
我必须升级到 4.0-stable,它将 must_revalidate
添加到 headers 并覆盖 render_fresh_page?
方法 https://github.com/AlchemyCMS/alchemy_cms/blob/4.0-stable/app/controllers/alchemy/pages_controller.rb#L192
看起来像这样:
app/controllers/alchemy/pages_controller_extension.rb
Alchemy::PagesController.class_eval do
def render_fresh_page?
flash.present? || !@page.cache_page? || stale?(etag: page_etag,
last_modified: @page.published_at,
public: !@page.restricted,
template: 'pages/show')
end
end