代码之家  ›  专栏  ›  技术社区  ›  Scott Miller

部署时的“预热缓存”

  •  17
  • Scott Miller  · 技术社区  · 16 年前

    我想知道是否有人有任何插件或capistrano配方可以通过在部署时构建所有页面缓存的html,或在部署之前在本地为rails应用程序“预热”页面缓存。

    它不是自己创建的(看起来很容易,但优先级较低),而是已经存在了吗?

    4 回复  |  直到 16 年前
        1
  •  19
  •   user42092 user42092    16 年前

    你可以用 wget

    这个选项告诉Wget在下载完每个文件后删除它下载的每个文件。它对于通过代理预取常用页面非常有用,例如:

       wget -r -nd --delete-after http://whatever.com/~popular/page/
    

        2
  •  4
  •   Marcus Łukasz Ostrowski    10 年前

    我每天晚上都使用类似这样的rake任务刷新页面缓存的站点地图:

     require 'action_controller/integration'
     ActionController::Base::expire_page("/sitemap.xml")   
     app = ActionController::Integration::Session.new
     app.host = "notexample.com"
     app.get("/sitemap.xml")
    

    http://gist.github.com/122738

        3
  •  2
  •   RichH    16 年前

    我已经设置了集成测试,确认站点的所有主要区域都可用(总共几百页)。他们不做任何改变数据的事情——只需收回页面和表单。

    我目前在部署我的生产实例时没有运行它们,但现在您提到了这一点——这实际上可能是一个好主意。

    另一种选择是拉取站点地图中显示的每个页面(如果您有一个页面,您可能应该这样做)。编写这样做的gem/rake脚本应该非常容易。

        4
  •  2
  •   mrflip    16 年前

    查看 spider_test rails plugin 这是一种在测试中执行此操作的简单方法。

    wget -r --level=5 --no-parent --delete-after \
      --wait=2 --waitretry=10  \
      --server-response        \
      --append-output=/tmp/spidering-`date "+%Y%m%d"`.log
      'http://whatever.com/~popular/page/'