Sinatraのパフォーマンスアップ作戦

自サービスを続々とSinatraってます。
その際、パフォーマンスアップを狙い、Memcached(+memcache-client)を利用した、Railsのフラグメントキャッシュライクに使えるExtensionを書きました。


使い方やコードはコチラにあります
http://github.com/gioext/sinatra-memcache/tree/master

使い方

# start memcached
cd myapp
git clone git://github.com/gioext/sinatra-memcache.git lib/sinatra-memcache
# app.rb
require 'rubygems'
require 'sinatra'
require File.dirname(__FILE__) + '/lib/sinatra-memcache/lib/sinatra/memcache'

# ページキャッシュのように使ったり
get '/cache1' do
 cache 'cache1' do
   sleep(5)
   'Hello Cache1'
 end
end

# 引数で有効時間や圧縮の設定したり
get '/cache2' do
 cache 'cache2', :expiry => 10, :compress => true do
   sleep(3)
   'Hello Cache2'
 end
end

# オブジェクトをキャッシュしたり
get '/obj' do
 hash = cache 'obj' do
   sleep(2)
   { :a => 'Hello Object' }
 end
 hash[:a]
end

# キーや正規表現でキャッシュを消したり
get '/expire' do
 expire 'cache1'
 expire /^cache/
 expire //
 'Hello Expire'
end

# デフォルトのオプション
# 開発時はキャッシュ無効が吉
# configure :development do
#   set :cache_enable, false
# end
configure do
 set :cache_server, 'localhost:11211'
 set :cache_namespace, 'sinatra-memcache'
 set :cache_enable, true
 set :cache_logging, true
end

試してないですがMemCache互換のAPIを持つTokyoTyrant等でも動くと信じてます
おしまい