मैं Dragonfly और rack/cache के संयोजन का उपयोग कर रहा हूं Heroku पर होस्ट किया गया।हेरोकू पर रैक/कैश के साथ 1 एमबी से अधिक फ़ाइलों को कैसे कैश करें?
मैं अपलोड की गई संपत्तियों के लिए ड्रैगनफ्लाई का उपयोग कर रहा हूं। थंबनेल को ऑन-द-फ्लाई पर संसाधित किया जाता है और मेमकैड से तेज वितरण के लिए रैक/कैश में संग्रहीत किया जाता है (Memcachier addon के माध्यम से)।
नियमित स्थैतिक संपत्तियों को रैक/कैश के माध्यम से memcached में भी कैश किया जाता है।
मेरी समस्या यह है कि 1 एमबी से अधिक अपलोड की गई फाइलें मेरे आवेदन में 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 एमबी की एक सीमा होती है, तो मैं समझ सकता हूँ क्यों मेरी संपत्ति कैश नहीं था, लेकिन मैं नहीं बल्कि यह की सेवा की संपत्ति नहीं तोड़ा जाएगा।
मुझे यह भी सुनिश्चित नहीं है कि यह त्रुटि कहां से आ रही है। संभवतः दूसरे रैक मिडलवायर में से एक से?
अधिकतम फ़ाइल आकार को बढ़ाने से कोई प्रभाव नहीं पड़ता है।
config.cache_store = :dalli_store, ENV["MEMCACHIER_SERVERS"].split(","), {¬
:username => ENV["MEMCACHIER_USERNAME"],¬
:password => ENV["MEMCACHIER_PASSWORD"],¬
:value_max_bytes => 5242880 # 5MB¬
}
दीर्घकालिक, मुझे पता है कि Heroku के बंद संपत्ति की इस तरह से आगे बढ़ एक समझदार कदम है, लेकिन यह एक त्वरित काम नहीं होगा।
त्रुटियों के बिना इस दौरान हेरोोकू पर इन संपत्तियों की सेवा के लिए मैं क्या कर सकता हूं?
यह समाधान सफलतापूर्वक मेरे लिए काम करता है। धन्यवाद! – Francois
एफवाईआई बंदर-पैचिंग के बिना हेडर बदलने के लिए एक एपीआई है - http://markevans.github.io/dragonfly/configuration/ ("respond_header" बिट) –