【问题标题】:Expiring a Rails Page cache automatically after a certain amount of time在一定时间后自动使 Rails 页面缓存过期
【发布时间】:2009-08-29 17:39:49
【问题描述】:

我正在为一个站点生成一个大站点地图并在其上使用页面缓存,以便在我的公共文件夹中生成一个 sitemap.xml。
有没有办法让这个页面在 3 天后过期? 我已经看过但找不到任何可以做到这一点的东西。

【问题讨论】:

    标签: ruby-on-rails caching


    【解决方案1】:

    设置一个 cron 作业将其删除:

    cd /home/user/apps/myapp/current/public/ && rm sitemap.xml
    

    如果你使用时,这应该可以解决问题:

    every 3.days, :at => '1:00am' do
      command "cd /home/user/apps/myapp/current/public/ && rm sitemap.xml"
    end
    

    如果要立即重新生成文件,请添加以下内容:

    && curl http://www.example.com/sitemap.xml
    

    【讨论】:

    • 我试图避免这种情况,因为我必须编写另一个作业才能点击页面并重新生成它。所以我试图只做一份工作而不是两份。
    • 不确定您在谈论什么样的工作,如果您使用页面缓存,当有人尝试访问它并且它不存在时会生成缓存文件。并且一旦创建了缓存文件,rails 操作将不会再次运行,直到文件被删除。
    • 我一直不清楚……我的错。这是一个 google 站点地图,所以唯一能击中它的是机器人。问题是如果页面加载时间过长,他们就不会使用它。 (我确实为 SEO 客户工作,这是他们告诉我的)。因此,我将有一个 cron 作业,每 3 天左右获取一次页面,但我需要删除缓存的 xml 页面,以便生成新的站点地图(其中的链接经常更改)。希望这更清楚。
    • 也许我在这里遗漏了一些东西,但是你能不能让 cron 作业每 3 天运行一次并执行 1)删除 xml 文件,2)访问 /site/sitemap.xml(如果我理解正确的话, 这将触发控制器生成新的 xml)
    • 您可以使用 curl 来获取文件以便生成它。我已经用命令更新了答案。
    【解决方案2】:

    如果您只需要每隔几天重新生成一次页面,whenever 应该可以完成这项工作。

    【讨论】:

    • 如果页面被缓存了,那么如何在不过期的情况下重新生成呢?
    • 您能告诉我们您如何/在哪里生成站点地图吗?一些代码会有所帮助
    • 它只是一个 Rails 控制器动作,用于拉入类别、产品并吐出一个 xml 视图 (sitemap.xml.erb)。让我知道您是否需要了解特定的内容。
    猜你喜欢
    • 1970-01-01
    • 2012-05-26
    • 2011-01-18
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 2013-03-09
    相关资源
    最近更新 更多