【问题标题】:How to activate page cache for Rails with Heroku & Cloudfront?如何使用 Heroku 和 Cloudfront 激活 Rails 的页面缓存?
【发布时间】:2016-09-20 07:43:13
【问题描述】:

网站分析器说我没有激活页面缓存,https://tools.pingdom.com/#!/bDj23F/www.anthonygalli.com。不过,我遵循了我能得到的每一步。我正在使用导轨"4.2.7.1"

在视图中

<%= render :partial => @posts, cached: true %>

在控制器中

fresh_when last_modified: @posts.created_at.utc, etag: @posts

在生产中.rb

config.action_controller.perform_caching = true
config.action_controller.asset_host = 'd37p52igaahgm9.cloudfront.net'

更新

【问题讨论】:

    标签: ruby-on-rails ruby amazon-web-services heroku browser-cache


    【解决方案1】:

    您可以在您的云端分发中添加一个自定义标头参数。这里,Google 和 Amazon 并不完全同意,因为 Google 建议使用 Expires 标头,亚马逊建议使用Cache-Control max-age 参数/值,所以你必须选择一个,因为如果你指定两个,亚马逊只会处理Cache-Control

    我们建议您改用 Cache-Control max-age 指令 用于控制对象缓存的 Expires 头字段。如果您指定 Cache-Control max-age 和 Expires 的值,CloudFront 使用 只有Cache-Control max-age的值。

    如果您的云端分发来自 S3 存储桶,您可以Add Headers to Your Objects Using the Amazon S3 Console

    • 从 aws s3 控制台打开 s3 对象的属性
    • 在右侧窗格中,展开元数据。
    • 点击添加更多元数据。
    • 在 Key 列表中,单击 Cache-Control 或 Expires(如果适用)。
    • 在值字段中,输入适用的值:

      • 对于缓存控制字段,输入:

        max-age=number of seconds that you want objects to stay in a CloudFront edge cache
        
      • 对于 Expires 字段,以 HTML 格式输入日期和时间。

    • 点击保存。

    见下文

    【讨论】:

    • 感谢您的帮助!我在我的 s3 存储桶的属性部分找不到任何提及“元数据”的内容,也许他们停止了该功能?如果你使用 s3,你能告诉我你是不是自己找到的吗?
    • 对不起,您需要逐个对象(您不能同时为所有文件应用元数据)
    • 别担心,但您是否逐个对象找到它?我在那里也没有看到“元数据”的选项。
    • @AnthonyGalli.com 添加关键元数据的屏幕截图
    • 谢谢!好的,这可能是问题的一部分,然后我将添加屏幕截图。
    【解决方案2】:

    据我所知,Rails 有三种兑现方式

    • 页面缓存 => 将所有页面放入缓存中.. 主要用于 静态页面

    • 动作缓存 => 顶部放置控制器动作

    • 片段缓存 => 用于视图的一部分/或用于逻辑等

    还需要实现观察者和清扫器以在某些更改/条件下使缓存过期,否则将再次渲染相同的内容

    【讨论】:

      猜你喜欢
      • 2016-02-18
      • 1970-01-01
      • 2014-04-29
      • 2014-10-13
      • 2012-01-01
      • 2010-10-28
      • 2018-12-10
      • 2011-01-21
      • 2017-12-28
      相关资源
      最近更新 更多