【发布时间】:2013-01-05 04:32:08
【问题描述】:
使用 Ruby on Rails 3.1,我在以下目录中有一些 JPG:
assets/images/subdir1/subdir2/myimage.jpg
这些图像是通过网站中的 JavaScript 动态加载的 (img.src = "assets/subdir1/subdir2/myimage.jpg")。出于某种原因,它们没有在生产环境中被缓存,而是使用 cache-control: no-cache 提供服务。
如何确保这些图像被缓存?
在我的 production.rb 文件中,我有这样的内容:
# Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added)
config.assets.precompile += ['jquery-1.8.3.min.js', 'json2.min.js']
认为已经根据该评论缓存了图像。
编辑更多信息:
JavaScript 是我编写的自定义 JS。基本上,我有一个自定义 JS 项目,它可以构建并将自身复制到 Ruby on Rails 目录中。在这个自定义 JS 中,我做了类似 img.src = "mydomain.com/assets/subdir1/subdir2/myimage.png";这可行,但是图像不会被 RoR 缓存。也许有一种方法可以告诉 RoR 在 subdir1 中递归找到的每个图像都应该是可缓存的? – Jeff 刚刚编辑
另一个编辑:
也许我可以编写自己的处理程序来处理文件并说它们应该被缓存?
或者在他们的文件夹中放置一个特殊的配置文件(比如 .htaccess 用于 Apache 服务器?)
肯定有办法做到这一点...
【问题讨论】:
-
缓存是什么意思?它们(生产中)是否在 public/assets/ 文件夹中?
-
是的,它们在 public/assets/subdirectories...
-
这很可能是 apache/nginx 配置问题。如果文件在那里,Rails 不会参与在生产环境中为它们提供服务
标签: ruby-on-rails ruby-on-rails-3 caching