2012-02-27 21 views
15

Tôi có nên cố gắng giảm thiểu mẫu bao gồm không? Tôi đã sử dụng chúng một cách tự do nhưng tôi tự hỏi nếu chúng không hiệu quả hoặc thêm một số chi phí trong các mẫu dựng hình?Mẫu Django có chậm không?

Trong một số trường hợp, tôi có các mẫu bao gồm các mẫu bao gồm các mẫu khác.

Trả lời

25

Thời gian hiển thị mẫu thường nhỏ hơn nhiều so với thời gian cơ sở dữ liệu đặc biệt, vì vậy thông thường bạn không cần phải lo lắng về nó sớm; có những khu vực khác nơi hiệu suất có thể được tăng hiệu quả hơn.

Để triển khai, bạn thường có thể tăng hiệu suất của mẫu bao gồm bằng cách sử dụng the cached loader (bạn có thể cần cuộn xuống một chút). Sau đó, nó chỉ tải mẫu một lần và sau đó nó có thể sử dụng các mẫu biên dịch thay vì cần phải tải nó từ đĩa.

Để giải quyết câu hỏi về chi phí tạo mẫu, khi bạn đã lưu trữ nó, nó khá rẻ. Tôi sẽ không lo lắng gì cả. Làm theo cách đó để tối đa hóa khả năng bảo trì của hệ thống của bạn.

Nó có lẽ sẽ vô trách nhiệm của tôi để không đề cập đến (hy vọng, nhắc nhở bạn về) hai điều chỉnh tối ưu hóa hiệu suất; họ là những câu nói đủ phổ biến mà bạn sẽ có thể tìm thấy nhiều thông tin về họ nếu bạn không quen thuộc với họ.

  1. Không tối ưu hóa sớm.
  2. Đo — không đoán.
+1

Tôi đã sử dụng django trong 2 năm nay và không bao giờ quản lý để đọc về bộ nạp được lưu trong bộ nhớ cache. Cảm ơn bạn. Than ôi, tôi có nhưng một upvote để cung cấp cho. – zsquare

+2

@zsquare: chắc chắn không có sự nổi bật mà tôi nghĩ nó xứng đáng. Tôi chỉ tìm thấy nó bởi vì tôi đang làm một điều đặc biệt không phải là web mà tôi đã vẽ một vài mẫu khoảng năm nghìn lần mỗi lần liên tiếp và biết rằng * phải * là cách để lưu chúng, rằng mọi người * phải * đã có nhu cầu trước đó --- và thậm chí sau đó tôi không tìm thấy nó trong tài liệu ngay lập tức nhưng tìm thấy nó thông qua một vé trong trình theo dõi lỗi. –

+11

Các mẫu của Django cực kỳ chậm và không đúng là cơ sở dữ liệu thường là nút cổ chai, chỉ trong một số trường hợp. Nguyên tắc đó đơn giản là một giáo điều. Khi tôi chạy 'ab' trên một trang có 7 truy vấn điển hình (một vài tham gia, 1' COUNT', không tập hợp, v.v.) cho Postgres và 20 mẫu bao gồm (sử dụng bộ nạp đệm) và hiển thị cùng mẫu với 0 bao gồm (bao gồm cùng một nội tuyến đầu ra) trong một mẫu, tôi đi từ 48 yêu cầu mỗi giây đến 8 yêu cầu mỗi giây ('ab -n 1000 -c 4 [url]') - 4 công nhân với uWSGI trên lõi tứ với 8GB RAM , zero HD IO, ngoại trừ cơ sở dữ liệu. – orokusaki