Tôi đang sử dụng CloudFlare CDN trên ứng dụng Rails 3.1 của mình. Cloudflare là một CDN hoạt động ở cấp DNS. Trong lần truy cập đầu tiên vào một nội dung tĩnh, CloudFlare tải nó từ ứng dụng của bạn rồi lưu nó vào CDN của họ. Yêu cầu trong tương lai cho tải nội dung đó từ CDN thay vì ứng dụng của bạn.Làm cách nào để ngăn Rails 3.1 khỏi việc lưu vào bộ nhớ đệm các tài sản tĩnh tới Rails.cache?
Vấn đề tôi đang gặp là rằng nếu bạn đặt bộ điều khiển bộ nhớ đệm là true:
config.action_controller.perform_caching = true
nó cho phép các middleware Kệ :: Cache. Vì Rails đặt một thiết lập kiểm soát bộ nhớ cache mặc định cho các tài sản tĩnh, các tài sản đó được ghi vào kho lưu trữ Rails.cache. Kết quả là lưu trữ bộ nhớ cache của tôi (trong trường hợp của tôi redis) đang được lấp đầy với các tài sản tĩnh với url là khóa băm.
Thật không may, tôi không thể tắt tiêu đề kiểm soát bộ nhớ cache nội dung tĩnh mà không ảnh hưởng đến cách trình duyệt Cloudflare và trình duyệt của người dùng của tôi lưu trữ nội dung. Tôi không thể tắt bộ nhớ đệm của bộ điều khiển hoặc tôi mất bộ nhớ đệm trang/hành động/đoạn. Cùng một kết quả nếu tôi xóa Rack :: Cache middleware.
Có ai có ý tưởng nào khác không?
Cập nhật: Tôi đã mở một vé trên GitHub here.
Khi bạn nói nội dung tĩnh, bạn có nghĩa là chỉ các tệp mà Sprockets tạo ra? –
Vâng, tôi có. Với hàm băm được thêm vào tên tệp. –