在 Rails 3.1 的开发模式下启用图像缓存

2024-02-18

在 Rails 3.1 开发模式中(使用资产管道时),从资产/图像中提供的图像会附带响应标头“缓存控制:必须重新验证”。

这意味着 Google Chrome(似乎只有 Chrome)将尝试多次重新获取图像 - 即使在单个页面视图期间也是如此。这导致通过 JavaScript 进行的各种 DOM 操作方式都出现了棘手的问题。仅举几例:

  • jQuery UI Draggable 有时会出现与鼠标光标的剧烈偏移
  • 在图像请求(始终返回 304 未修改)正在进行时,添加或删除引用图像的 CSS 类将会闪烁或调整大小。
  • 附加或替换包含图像的 HTML 节点将触发更多图像获取,这将导致它们下面的整个节点树在 Chrome 等待每个图像的 304 响应时闪烁。

我完全可以理解,对于开发服务器来说,这是一件合理的事情。我什至可以理解 Chrome 拒绝缓存图像,即使在单个页面视图中也是完全合理的。

那么,有没有一种方法可以更改 Rails 在开发中应用于图像响应的缓存控制标头?

Update:正如几个人所建议的,一个更有趣的问题是,为什么 Chrome 会尝试在页面视图中多次重新获取图像,而其他浏览器似乎没有这样做? (为什么这不会给其他开发人员带来问题?)

更新x2:我不会将此作为答案提交,因为这只是一个足以满足我的目的的解决方法,但我们能够通过预编译资产然后丢弃预编译的 CSS 和 JS 来解决这个问题。 (这将需要链轮调试在development.rb.)

rake assets:precompile
cd public/assets
find . -name "*.js*" -exec rm -rf {} \;
find . -name "*.css*" -exec rm -rf {} \;

我见过的操作资源的 Cache-Control 标头的唯一方法是通过以下方式配置静态资源:

config.serve_static_assets = true

config.static_cache_control = "public, max-age=3600"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Rails 3.1 的开发模式下启用图像缓存 的相关文章

随机推荐

  • SparklyR:直接转换为镶木地板

    您好 我是集群计算的新手 目前我只在独立集群上玩 sc lt spark connect master local version 2 0 2 我有一个巨大的 csv 文件 15GB 我想将其转换为 parquet 文件 第三块代码解释了原
  • 如何为 COM Interop 库生成 C# 源代码而不是程序集?

    导入 COM 库 直接使用 tlbimp 或间接使用 Visual Studio 添加引用对话框 时 有没有办法生成 C 源代码而不是二进制互操作程序集 例如 Interop Word dll UPD 反射器是个坏主意 问题是对于com接口
  • 高清处理器显卡 (HD4000) 无法作为英特尔 OpenCL SDK 中的设备加载

    我使用 i7 3770K Ivy Bridge 和 HD 4000 并且我已经安装了最新的驱动程序和最新的OpenCL SDK http software intel com en us articles vcsource tools op
  • 如何以统一的方式从.NET打印Office文档?

    使用 Microsoft interOp 对象 我可以通过编程方式打印 Word 或 Excel 文档 有没有更简单 统一的方法来以编程方式打印所有类型的文档 txt doc xls pdf 等 Microsoft 默认使用 DDE 从办公
  • 如何使用反射获取构造函数作为 MethodInfo

    构造函数如下所示 public NameAndValue string name string value 我需要使用反射将其作为 MethodInfo 获取 它尝试了以下操作 但没有找到构造函数 GetMethod回报null Metho
  • 当字段不完整时使用 Circe 解码 Json

    我有一份 json 格式的成绩单 里面有一堆单词 words duration 123 name world time 234 speaker null 我一直在使用 Circe 来编码 解码 Json 在这个特殊情况下 import io
  • 了解 OpenGL 引擎的 GLTF2.0 文件的蒙皮部分

    我有一个简单的混合器模型 它由三个网格组成 三个网格各控制一个网格 动画只是骨骼围绕 y 轴稍微旋转立方体并返回 中心骨骼是两个外部骨骼的父骨骼 然后 我使用 GLTF2 0 文本版本 导出插件导出此场景 现在尝试将其导入到我新制作的 op
  • Hbase 架构嵌套实体

    有谁有关于如何创建带有嵌套实体的 Hbase 表的示例吗 Example UserName string SSN string Books collection 例如 书籍收藏看起来像这样 Books isbn title etc 我找不到
  • Python、Java、C# 和并行算法

    我想知道 尝试用 Python 创建并行算法有什么优点吗 假设我想研究一种新的并行算法 并且我可以选择 C C 和 Python 那么其中一个或另一个 更好 来测试和基准测试这些算法 或者它们只是 功能上等效 而且除了与解释 编译 虚拟机语
  • Swagger springfox 在 POST 上隐藏模型属性

    想知道如何在 POST 时隐藏 Swagger 中的模型属性 我尝试过Swagger springmvc 0 9 3 和Springfox 支持swagger规范2 0 但均无济于事 问题是我想在通过 Swagger 的 GET 请求中看到
  • 从不同线程调用

    我不敢相信 这在我的其他应用程序中有效 但在这个具有类似结构的应用程序中 它不起作用 public string ListAdd set if listView1 InvokeRequired this Invoke MethodInvok
  • MySQL选择昨天的日期

    如何显示和统计日期为昨天的值 我用了time 在数据库中插入日期 例子 URL google com youtube com google com youtube com test com youtube com DateVisited 1
  • 在 Java 中打印数组

    我正在编写一个方法来打印它传递的每个对象 通过调用该方法可以正常工作Object toString 方法适用于对象 但不适用于数组 我可以找出它是否是一个数组Object getClass isArray 方法 但我不知道如何投射它 int
  • 继承的 CSS 属性的特殊性

    继承属性收到的 CSS 特异性级别是多少 我通读了有关 CSS 特异性的 W3 建议 因此我了解如何计算直接针对同一元素的 css 规则的不同特异性 但我没有看到其中提到继承属性的特异性级别 特别是 我遇到的问题与标题元素有关 尽管我很有兴
  • wpf按钮背景图片

    我有一个带有 5 个按钮的 wpf 页面 所有 5 个按钮必须具有相同的大小 并且必须具有相同的背景图像 这个怎么做 问候 卡恩 使用样式 这将自动应用于all窗口中的按钮
  • 如何在ansible命令中传递用户/密码

    我想使用 Ansible 作为另一个 Python 软件的一部分 在该软件中 我有一个主机列表及其用户 密码 有没有办法将 SSH 连接的用户 密码传递给 Ansible ad hoc 命令或以加密方式将其写入任何文件中 还是我理解错了 唯
  • 如何将变量从 awk 传递到 shell 命令?

    我正在尝试从 awk 中为文件的每一行运行 shell 命令 并且 shell 命令需要一个输入参数 我尝试使用system 但它无法识别输入参数 该文件的每一行都是一个文件的地址 我想运行一个命令来处理该文件 因此 对于一个简单的示例 我
  • 实体框架 - 我应该如何实例化我的“实体”对象

    我是实体框架和 ASP Net MVC 的新手 主要从教程中学习 但对两者都没有深入的了解 我确实有 Net 2 0 ADO Net 和 WebForms 的经验 我当前的怀疑来自于我实例化实体对象的方式 基本上我在我的控制器中这样做 pu
  • Python 数组重塑形状数组问题(无,192)

    我有这个错误 我不知道如何重塑有尺寸的地方None Exception Error when checking expected input 1 to have shape None 192 but got array with shape
  • 在 Rails 3.1 的开发模式下启用图像缓存

    在 Rails 3 1 开发模式中 使用资产管道时 从资产 图像中提供的图像会附带响应标头 缓存控制 必须重新验证 这意味着 Google Chrome 似乎只有 Chrome 将尝试多次重新获取图像 即使在单个页面视图期间也是如此 这导致