2009-12-05 36 views
6

Tôi có thể sử dụng partials nhiều như tôi muốn hoặc tôi có phải kiềm chế bản thân mình để tránh mang lại cho quan điểm của tôi để thu thập thông tin dưới lưu lượng truy cập nhiều?Gọi một phần là một hoạt động đắt tiền?

+1

Rõ ràng là một số chi phí, nhưng tất cả mọi thứ tôi đã thấy là có lợi cho trừu tượng với partials. Tôi mong chờ những gì mọi người biết họ đang làm gì để trả lời câu hỏi này. +1 cho câu hỏi hay. –

+0

Nói chung, tôi muốn nói "sử dụng nhiều như bạn muốn." Nhưng nó thực sự phụ thuộc vào bao lâu để render partials cụ thể của bạn. Nếu đuôi nhật ký phát triển của bạn ('tail -f log/development.log') và tải một trang, bạn sẽ thấy mất bao lâu để hiển thị từng phần. Nếu một hoặc nhiều biểu diễn chậm, hãy tìm cách tăng tốc hoặc lưu trữ bộ nhớ cache. Nếu không, đừng lo. –

Trả lời

11

Có một chi phí rõ ràng bằng cách sử dụng một phần nhưng đây không phải là điều bạn nên lo lắng.

Partials là các tệp. Khi bạn thực hiện một hành động mà không có partials, hành động của bạn "chi phí" 1 tập tin (đó là không hoàn toàn đúng, nhưng điều này là để đơn giản hóa lời giải thích). Nếu hành động của bạn hiển thị 4 partials, bạn kết thúc với chi phí là 5. Điều này có nghĩa là bạn có thêm 4 cuộc gọi IO và chi phí thực cho mỗi cuộc gọi phụ thuộc vào tải trên máy chủ của bạn, hiệu suất máy chủ, v.v.

Nhưng chi phí này có quan trọng không? Theo kinh nghiệm của tôi, với 99% số lần không. Cũng đáng chú ý, những lợi ích của việc sử dụng partials về khả năng đọc mã và bảo trì thường là đáng để lựa chọn.

Nếu buổi biểu diễn phải là một tính năng chính, bạn có thể nên tìm tốc độ và cải tiến ở nơi khác.

Hãy nhớ rằng: Ruby không phải là một ngôn ngữ lập trình siêu nhanh và sự biểu đạt mã luôn chiếm vị trí đầu tiên có lợi cho các buổi biểu diễn. Rails hoàn toàn đồng ý với quy ước này, mặc dù nhóm Rails luôn tập trung vào các buổi biểu diễn (và Rails 3 đó là minh chứng thực tế luôn có những cải tiến)

Điều đó có thể an toàn sử dụng partials và giảm chi phí ứng dụng cơ chế lưu vào bộ nhớ đệm. Ví dụ: bạn có thể đặt hiển thị bộ sưu tập trong khối cache để câu lệnh thu thập hiển thị chỉ được thực hiện một lần thì ứng dụng của bạn sẽ chỉ tải 1 tệp bộ nhớ cache thay vì 10 phần không được lưu trong bộ nhớ cache.

Một trong những lỗi lén lút nhất mà tôi đã thực hiện nhiều lần ngay từ đầu là phải lo lắng về màn trình diễn theo cách sai, mà nói, mà không thực sự chạy điểm chuẩn. Tôi nhớ một lần khi tôi đang cố gắng xóa một truy vấn cơ sở dữ liệu duy nhất có lợi cho băm mã hóa cứng vì "chi phí truy vấn", mà không nhận ra có một truy vấn ngu ngốc khác đang tải toàn bộ bộ sưu tập bảng mà không có câu lệnh include, dẫn đến chạy truy vấn thứ hai chậm hơn 3 lần. Vì vậy, nếu bạn thực sự quan tâm đến hiệu suất, bạn có lẽ không nên tránh sử dụng partials nhưng thay vào đó hãy chắc chắn rằng bạn đang tận dụng tất cả các tính năng khác Rails cung cấp cho bạn để mở rộng quy mô ứng dụng của bạn.

+1

đây là câu trả lời –

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