Rails页面缓存和flash消息

KJF*_*KJF 10 caching ruby-on-rails page-caching

我很确定我可以对我的绝大部分网站进行页面缓存,但阻止我这样做的一件事是我的flash消息不会显示,或者它们会在错误的时间显示.

我正在考虑的一件事是将flash消息写入cookie,阅读它并通过javascript显示它,并在消息显示后清除cookie.有没有人有这样的成功或有更好的方法?

谢谢.

VMO*_*ega 8

可缓存的闪存执行此操作:

在您的应用程序控制器

after_filter :write_flash_to_cookie


def write_flash_to_cookie
    cookie_flash = cookies['flash'] ? JSON.parse(cookies['flash']) : {}

    flash.each do |key, value|
        if cookie_flash[key.to_s].blank?
            cookie_flash[key.to_s] = value
        else
            cookie_flash[key.to_s] << "<br/>#{value}"
        end
     end

    cookies['flash'] = cookie_flash.to_json
    flash.clear
end
Run Code Online (Sandbox Code Playgroud)

然后通过Javascript读取"flash"cookie并在HTML中插入消息


Cha*_*ray 2

一种解决方案是缓存页面,但包含一个 JavaScript 片段,该片段将针对您想要动态的部分发出另一个小请求。因此,用户将完全下载页面,然后当 JavaScript 执行时,它将下拉动态页面元素。

我不久前写了一篇关于此的简短博客文章。 http://chase.ratchetsoftware.com/2008/12/rails-caching-dynamic-fragments/

此外,RailsEnvy 的 Greg Pollack 还制作了一个截屏视频,其中他重点介绍了缓存页面中的动态数据。 http://railslab.newrelic.com/2009/02/05/episode-5-advanced-page-caching

希望这可以帮助,

蔡斯·格雷

  • 片段缓存比服务第二个 HTTP 请求更好,第二个 HTTP 请求仅请求可包含在第一个请求中的数据。此策略将使您服务的 HTTP 请求数量增加一倍。 (3认同)