Vì Rails 4 đã xóa bộ đệm trang và bộ nhớ đệm hành động, tôi tự hỏi cách Rails 4 để lưu một hành động không có biến và chỉ có html trong chế độ xem là gì? Tôi có nên phân đoạn bộ nhớ cache html tĩnh trong chế độ xem không? Làm cách nào để đặt etag/fresh_when khi không có mô hình để đặt nó hết hạn? Tôi đang đấu tranh để tìm một ví dụ hoặc quy ước để bộ nhớ đệm những gì nên là trang dễ nhất để cache.Caching/Etag cho hành động tĩnh trong Rails 4
Một lưu ý là trong khi chế độ xem hoàn toàn tĩnh, trang vẫn có thanh điều hướng động tùy thuộc vào việc người dùng có đăng nhập hay không. Làm thế nào bạn sẽ xử lý một trang tĩnh như thế này mà không cần đến bộ nhớ đệm hành động kể từ khi nó được gỡ bỏ và quy ước đã được thiết lập không sử dụng phiên bản đá quý?
Ví dụ:
class HomesController < ApplicationController
def index
end
end
nhà/index.html.erb
<div>A bunch of normal html tags with no erb</div>
Edit: Dựa trên câu trả lời @ SEVERIN và nghiên cứu của riêng tôi, đây là những gì tôi đã đưa ra cho đến nay.
class HomesController < ApplicationController
def index
fresh_when(["some-identifier", current_user, flash])
end
end
Bên cạnh đó, tôi đang sử dụng https://github.com/n8/bust_rails_etags đặt lại tất cả etags sau một triển khai vì xem có thể thay đổi giữa triển khai. Tôi nghĩ rằng điều này bao gồm các etag khá tốt mặc dù tôi vẫn còn tò mò cho dù tươi khi sẽ bao gồm một số định danh về xem tự động và liệu "một số-idnetifier" là cần thiết? Nó sẽ là một vấn đề mà đôi khi current_user và flash sẽ là nil?
Bây giờ, trên điểm thứ hai của đoạn bộ nhớ đệm trong nội dung tĩnh. Tôi giả sử nếu tôi đã làm:
cache "v1" do
all my html
end
Tôi phải nhớ luôn thay đổi định danh bộ nhớ cache khi trang được thay đổi nếu không ứng dụng của tôi sẽ phân phối nội dung cũ. Bất kỳ cách nào để tự động hóa điều này cũng như đã được xử lý bởi đường ray? Nó sẽ được tốt đẹp để chỉ bộ nhớ cache thời gian qua xem được cập nhật hoặc một cái gì đó thông minh vì vậy tôi không phải theo dõi trên khi nội dung tĩnh của tôi được thay đổi.
Tôi đã trả lời phần thứ hai của câu hỏi của bạn trong câu trả lời của tôi. Nếu bất cứ điều gì là không rõ ràng hoặc nếu bạn có thêm câu hỏi, xin vui lòng không ngần ngại hỏi họ :) – severin