現在、私はsinatraウェブサーバのためにenable:sessionsを使用しています。しかし、私はメモリベースのセッション管理に移行する必要がありますラックセッションのリセット/有効期限
私はRack :: Session :: Poolを使用すると、セッションがページのリロード時に期限切れになっているように見えますが、新しいAjax呼び出しであっても実行されます。
現在、私はsinatraウェブサーバのためにenable:sessionsを使用しています。しかし、私はメモリベースのセッション管理に移行する必要がありますラックセッションのリセット/有効期限
私はRack :: Session :: Poolを使用すると、セッションがページのリロード時に期限切れになっているように見えますが、新しいAjax呼び出しであっても実行されます。
Passengerまたは他のウェブサーバーのいずれかを使用している場合は、新しいスレッドが作成されるためです。あなたのページにすぐにリロードすると、新しいスレッドが作成されているセッションが期限切れになることがあります(特定のWebサーバースレッドのメモリにあります)。
ゆっくりとページをリロードすると、同じWebサーバースレッド上に存在します。
NickはPassengerがもたらす光の問題については正しいです。
Redisは素晴らしいインメモリソリューションです。それは信じられないほど軽量です。詳細はhttp://redis.io/をご覧ください。
私はRack::Session
のRedisアダプタを使用します。
あなたはここでそれについての詳細を見つけることができます:それは非常に簡単ですhttp://redis-store.org/redis-rack/
。あなたのGemfileにgem redis-rack
を含めて、これをあなたのsinatraアプリに含めてください。
require 'redis-rack'
disable :sessions
use Rack::Session::Redis
ああ、私は参照してください。私の問題は、私のアプリが非常に怒っているので、私は同時に呼び出しを実行することです。 方法はありますか、これを管理できますか? –
Rack :: Session:CookieまたはRack :: Session:Memcacheを使用することができます。何らかの理由でそれらを実装するのに問題があります.-セッションストアのデータベーステーブルを使用してください。 – nictrix
Prakash、私の解決策を見るためにここに行ってください:http://stackoverflow.com/questions/5175854/rack-session-cookie-and-sinatra-setting-and-accessing-data – nictrix