我最近发布了我的 Web 应用的 Rails 3.1 升级版。我在 Unbuntu 10.04 VPS 上为该应用提供支持,后端使用 Thin,前端使用 Nginx。为了使我的应用能够与新的 Rails 资产管道配合使用,我在 Nginx 配置文件中添加了以下条目:
location ~ ^/(assets|images|javascripts|stylesheets|swfs|system)/ {
access_log off;
gzip_static on; # to serve pre-gzipped version
expires max;
add_header Cache-Control public;
# Some browsers still send conditional-GET requests if there's a
# Last-Modified header or an ETag header even if they haven't
# reached the expiry date sent in the Expires header.
add_header Last-Modified "";
add_header ETag "";
break;
}
或多或少直接来自导游,并且它有效。但是,现在我注意到我的 Thin 日志中有如下条目:
cache: [GET /] miss
cache: [GET /designs/victoria/images/gallery-3-zoom.png] miss, store
cache: [GET /blank.html] stale, invalid, store
cache: [GET /blank.html] stale, invalid, store
cache: [GET /robots.txt] stale, invalid, store
cache: [GET /parties/new] miss
这些有很多。大多数是针对 /blank.html 的。任何资产请求都是针对非管道资产的。有些是直接来自我的路由文件的 URL。我的问题:
- 这些“cache:”条目是什么?我从未在此应用程序上明确配置缓存。
- 如果我的设置配置错误我该如何纠正?
- 为什么 blank.html 会收到如此多的请求(什么是 blank.html?)?
任何见解都值得赞赏!谢谢。
答案1
“cache:”条目似乎来自 Rack::Cache,在 Rails 3.1 中,当打开资源管道时,该功能就会启用。这是一件好事,因为它通过 http 标头进行 HTTP 缓存。默认情况下,Rack::Cache 启用了详细选项,因此它会将所有跟踪记录到 STDERR,这就是为什么它会出现在我之前不嘈杂的 Thin 日志中。
blank.html 似乎是作为 IE6 修复的一部分,使浏览器在悬停时透明地显示 iframe 背景。我不知道为什么它会被如此频繁地请求,但该文件默认在 Rails 中并且一直都在那里。
综上所述,我的应用程序看起来是健康的,并且状态良好。