私は、HerokuでホストされているDragonflyとrack/cacheの組み合わせを使用しています。Herokuのラック/キャッシュで1MBを超えるファイルをキャッシュする方法は?
私はアップロードされたアセットにDragonflyを使用しています。サムネイルはオンザフライで処理され、memcached(Memcachier addon経由)からの高速配信のためにラック/キャッシュに格納されます。
通常の静的資産は、memcachedのラック/キャッシュを介してキャッシュされます。
私の問題は、アップロードされたファイルが1MBを超えると、アプリケーションで500のエラーが発生するということです。
2013-07-15T10:38:27.040992+00:00 app[web.1]: DalliError: Value too large, memcached can only store 1048576 bytes per key [key: d49c36d5db74ef45e957cf169a0b27b83b9e84de, size: 1502314]
2013-07-15T10:38:27.052255+00:00 app[web.1]: cache: [GET /media/BAhbBlsHOgZmSSIdNTA3Njk3ZWFiODBmNDEwMDEzMDAzNjA4BjoGRVQ/WTW_A5Flyer_HealthcareMedicalObsGynae_WEB.pdf] miss, store
2013-07-15T10:38:27.060583+00:00 app[web.1]: !! Unexpected error while processing request: undefined method `each' for nil:NilClass
Memcacheのは、1メガバイトの限界を持っているので、私の資産がキャッシュされなかった理由を私は理解できますが、私はむしろそれが資産を提供壊れていなかったでしょう。
このエラーがどこから来ているのかわかりません。おそらく他のラックミドルウェアの1つからですか?
最大ファイルサイズを大きくしても影響はありません。
config.cache_store = :dalli_store, ENV["MEMCACHIER_SERVERS"].split(","), {¬
:username => ENV["MEMCACHIER_USERNAME"],¬
:password => ENV["MEMCACHIER_PASSWORD"],¬
:value_max_bytes => 5242880 # 5MB¬
}
長期的には、私はHerokuののオフ資産のこの種の移動は賢明な動きであることを知っているが、それは迅速な仕事ではありません。
間違いなくHerokuでこれらの資産を提供するにはどうすればよいですか?
このソリューションは正常に私のために働いた。ありがとう! – Francois
FYI猿のパッチを適用せずにヘッダーを変更するためのAPIがあります。http://markevans.github.io/dragonfly/configuration/( "response_header"ビット) –