我有一个带有Devise和Alchemy CMS的应用程序,当我登录时,“登录”按钮应更改为“注销”,但没有。我认为已启用HTTP缓存。如果注销,我将重定向到主页,并且在请求标头中可以看到以下内容:
Status Code: 302
cache-control:no-cache
但是,如果我转到另一页,该按钮仍显示“注销”。 如果刷新主页,则会在标题中看到以下内容:
Request Method:GET
Status Code:200 (from disk cache)
cache-control:public
last-modified:Mon, 17 Dec 2018 19:32:08 GMT
如果我登录并转到另一页面,该按钮将显示“登录”。在标题中,我看到以下内容:
Request Method:GET
Status Code:200 (from disk cache)
cache-control:public
last-modified:Mon, 17 Dec 2018 19:32:08 GMT
有办法解决这个问题吗?
答案 0 :(得分:0)
我必须升级到4.0稳定版,这会在头文件中添加must_revalidate
并覆盖render_fresh_page?
方法https://github.com/AlchemyCMS/alchemy_cms/blob/4.0-stable/app/controllers/alchemy/pages_controller.rb#L192
看起来像这样:
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