Cho rằng Heroku Cedar không có bộ nhớ đệm http do Varnish cung cấp, tôi muốn sử dụng Rack::Cache
. tôi đã được cho biết rằng đường ray 3.1.1 có Rack::Cache
hoạt động theo mặc định, tôi chỉ cần phải chắc chắn phải có trong cấu hình:Rails 3.1 và Http Page Caching
config.action_controller.perform_caching = true
và tôi cần phải chọn một cửa hàng bộ nhớ cache, cho thí nghiệm này tôi sử dụng:
config.cache_store = :memory_store
trong hành động of the page tôi muốn bộ nhớ cache tôi đã thêm các dòng sau:
response.header['Cache-Control'] = 'public, max-age=300'
response.header['Expires'] = CGI.rfc1123_date(Time.now + 300)
mã này đã từng làm việc tốt với Varni sh, yêu cầu đầu tiên sẽ trả về 200 và tiếp theo (trong 5 phút) sẽ trả lại một 304
.
Điều này không xảy ra với Rails 3.1 và Heroku Cedar Stack. Tôi nhận được các tiêu đề đó trong phản hồi nhưng các yêu cầu tiếp theo trả về 200 thay vì 304.
Tôi đang làm gì sai? Cảm ơn bạn.
Bạn nói đúng !!!! Có cách nào để cache ở mức cao hơn một chút không? Nó có đáng không? (ví dụ: nếu tôi thiết lập giá đỡ :: cache trong config.ru trước ứng dụng đường ray?) – soulnafein
không thực sự ... Rack :: Cache là đặt cược tốt nhất của bạn. Chỉ cần đặt là cao như bạn có thể trong môi trường của bạn và nó sẽ cung cấp cho bạn hiệu suất bạn cần cho nó tránh toàn bộ ngăn xếp http Rails. – leonardoborges
Oh và tôi rất cảm kích nếu bạn có thể bỏ phiếu cho câu trả lời gốc nếu nó giúp bạn :) – leonardoborges