Utilizzo una combinazione di Dragonfly e rack/cache ospitata su Heroku.Come memorizzare nella cache i file oltre 1 MB con rack/cache su Heroku?
Sto utilizzando Dragonfly per le risorse caricate. Le anteprime vengono elaborate al volo e archiviate in rack/cache per una rapida consegna da memcached (tramite lo Memcachier addon).
Le risorse statiche regolari sono anche memorizzate nella cache in memcached tramite rack/cache.
Il mio problema è che qualsiasi file caricato oltre 1 MB sta causando un errore 500 nella mia applicazione.
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 ha un limite di 1 MB, quindi posso capire perché la mia attività non è stata memorizzata nella cache, ma avrei preferito non rompere attività a servizio.
Non sono nemmeno sicuro da dove provenga questo errore. Presumibilmente da uno degli altri media rack?
L'aumento della dimensione massima del file non sembra avere alcun effetto.
config.cache_store = :dalli_store, ENV["MEMCACHIER_SERVERS"].split(","), {¬
:username => ENV["MEMCACHIER_USERNAME"],¬
:password => ENV["MEMCACHIER_PASSWORD"],¬
:value_max_bytes => 5242880 # 5MB¬
}
seri, so che lo spostamento di questo tipo di attività off di Heroku è una mossa sensata, ma che non sarà un rapido lavoro.
Cosa posso fare per servire queste risorse su Heroku nel frattempo senza errori?
questa soluzione ha funzionato con successo per me. Grazie! – Francois
FYI c'è un'API per cambiare le intestazioni senza patch di scimmia - vedi http://markevans.github.io/dragonfly/configuration/ (bit "response_header") –