我在 Heroku 上的 Rails 3.0.7 应用程序上使用 jammit
gem "jammit", :git => "git://github.com/documentcloud/jammit.git"
我在 rake 文件中有这个,在我提交/部署之前打包资产
desc 'jammit'
task :jam => :environment do
require 'jammit'
Jammit.package!
end
这在 .git/hooks/pre-commit 所以它是自动完成的
echo "jamming it"
rake jam
git add public/assets/*
git add public/javascripts/*
默认情况下,Heroku 上的过期时间只有 12 小时,为了增加它(因为我有一个我有信心的缓存清除方案)我把它放在 config/initializers/heroku.rb
module Heroku
class StaticAssetsMiddleware
def cache_static_asset(reply)
return reply unless can_cache?(reply)
status, headers, response = reply
headers["Expires"] = CGI.rfc1123_date(11.months.from_now)
build_new_reply(status, headers, response)
end
end
end
为了减少我的 Heroku Rails 服务器上的负载,我还在CloudFlare使用了一个免费帐户,它提供了一个轻量级的反向代理/cdn,具有一些不错的分析和安全功能。
当我开始缓存公共内容时,这东西真的会尖叫!