私は現在、HerokuのCedarスタックでOctopress(Jekyllに基づく)サイトを実行しています。コードはここにあります:https ://github.com/elithrar/octopress
Cache-Control
ファイルタイプに基づいてヘッダーを選択的に適用したい:
.html
ファイルはの値を取得しますpublic, max-age=3600
.css|.js|.png|.ico
(etc)の値を取得します-あるいは、このルールをディレクトリpublic, max-age=604800
から提供されるものすべてに適用したいと思います。/stylesheets', '/javascripts', '/imgs'
運がなく、両方set :static_cache_control , [:public, :max_age => 3600]
とバニラcache_control :public, :max_age => 3600
ステートメントだけを使用しました。
public, max-age=3600
記事自体を設定する/2012/lazy-sundays/
ことができましたが(例)、CSS / JSに適用するヘッダーを取得できませんでした(例/stylesheets/screen.css
) 。
私config.ru
は現在このように見えます(更新されました):
require 'bundler/setup'
require 'sinatra/base'
# The project root directory
$root = ::File.dirname(__FILE__)
class SinatraStaticServer < Sinatra::Base
get(/.+/) do
cache_control :public, :max_age => 7200
send_sinatra_file(request.path) {404}
end
not_found do
send_sinatra_file('404.html') {"Sorry, I cannot find #{request.path}"}
cache_control :no_cache, :max_age => 0
end
def send_sinatra_file(path, &missing_file_block)
file_path = File.join(File.dirname(__FILE__), 'public', path)
file_path = File.join(file_path, 'index.html') unless file_path =~ /\.[a-z]+$/i
File.exist?(file_path) ? send_file(file_path) : missing_file_block.call
end
end
use Rack::Deflater
run SinatraStaticServer