Tôi đang sử dụng kết hợp Dragonfly và rack/cache được lưu trữ trên Heroku.Làm cách nào để lưu trữ các tệp trên 1MB với giá/bộ nhớ cache trên Heroku?
Tôi đang sử dụng Dragonfly cho nội dung được tải lên. Hình thu nhỏ được xử lý nhanh chóng và được lưu trữ trong giá/bộ nhớ cache để phân phối nhanh từ memcached (thông qua Memcachier addon).
Nội dung tĩnh thông thường cũng được lưu trong bộ nhớ đệm qua giá/bộ nhớ cache.
Vấn đề của tôi là bất kỳ tệp tải lên nào trên 1MB đều gây ra lỗi 500 trong ứng dụng của tôi.
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 có giới hạn 1MB, vì vậy tôi có thể hiểu tại sao nội dung của tôi không được lưu vào bộ nhớ cache nhưng tôi không muốn phân phối nội dung.
Tôi thậm chí không chắc chắn lỗi này đến từ đâu. Có lẽ từ một trong những phần mềm giá khác?
Tăng kích thước tệp tối đa dường như không có bất kỳ ảnh hưởng nào.
config.cache_store = :dalli_store, ENV["MEMCACHIER_SERVERS"].split(","), {¬
:username => ENV["MEMCACHIER_USERNAME"],¬
:password => ENV["MEMCACHIER_PASSWORD"],¬
:value_max_bytes => 5242880 # 5MB¬
}
Dài hạn, tôi biết việc di chuyển loại tài sản này ra khỏi Heroku là một động thái hợp lý, nhưng đó không phải là công việc nhanh.
Tôi có thể làm gì để phân phát các nội dung này trên Heroku trong thời gian chờ đợi mà không có lỗi?
giải pháp này đã thành công với tôi. Cảm ơn! – Francois
FYI có API để thay đổi tiêu đề mà không cần vá lỗi khỉ - xem http://markevans.github.io/dragonfly/configuration/ (bit "response_header") –