2014-04-24 15 views
5

Giả sử khung nhìn nằm trong erb/haml, nhưng là tĩnh (không có bất kỳ phần động nào bên trong nó), Rails có biên dịch lại chế độ xem đó mỗi khi có ai đó truy cập hay không?Rails có biên dịch lại toàn bộ chế độ xem erb/haml mỗi khi một số lần truy cập trong sản xuất không?

Câu hỏi tiếp theo: nếu tôi có chế độ xem với một số phần động, Rails chỉ biên dịch lại phần động của chế độ xem hay biên dịch lại toàn bộ trang?

Tôi đang chạy Rails 4.

Trả lời

6

Rails đánh giá xem các file và partials trên mọi yêu cầu. Đó là lý do tại sao html đoạn bộ nhớ đệm là rất có giá trị.

Xem Caching with Rails trong Hướng dẫn Rails.

Thông thường, bạn sẽ sử dụng bộ nhớ cache của Rails để lưu vào bộ nhớ cache một đoạn html để nó không cần phải được hiển thị lại trên mỗi yêu cầu. Dưới đây là ví dụ về Haml:

- cache "key-name-for-static-content" do 
    .some-html 
    some content 

Xem DHH's How Key-Based Cache Expiration Works để lưu bộ nhớ đệm dựa trên khóa bằng mô hình.

Để sử dụng nâng cao, tôi đã viết cache_rocket để giúp cache nội dung tĩnh xung quanh nội dung động trong partials.

+0

Điều đó có nghĩa là tôi cũng nên lưu vào bộ đệm tĩnh của mình nếu tôi muốn chế độ xem hiển thị nhanh hơn? – Sbbs

+1

Vâng, đó là một ví dụ điển hình về những gì bạn nên lưu vào bộ nhớ cache. – tee

+0

btw, đó là một viên ngọc khá hay mà bạn đã viết; đây phải là một phần của đường ray. – Sbbs

1

Chỉ cần một chút chú thích thuật ngữ: bây giờ compile thường đề cập đến hành động biến mẫu xem thành hàm ruby. Rails thực hiện điều này cho tất cả các quan điểm:

http://guides.rubyonrails.org/action_view_overview.html#template-caching

Những chức năng sẽ sau đó sản lượng đầu ra mà bạn muốn.

Vì vậy, tôi cho rằng chế độ xem không được "biên dịch lại" nhưng "được đánh giá lại".

Các vấn đề liên quan