Khi nào tôi nên tạo nhiều Hiển thị của Chế độ xem thay vì nhiều Chế độ xem?


8

Có phải chỉ đơn giản là vấn đề thuận tiện để tạo nhiều Hiển thị của Chế độ xem thay vì nhiều Chế độ xem hoặc có lợi ích về hiệu suất không?

Có bất kỳ mục nào sau đây có trong một số Hiển thị nhưng không có mục nào khác ảnh hưởng đến toàn bộ Chế độ xem không?

  • bộ lọc theo ngữ cảnh
  • bộ lọc loại nội dung
  • tổng hợp

Ví dụ: tôi tò mò liệu màn hình hiển thị chỉ hiển thị kết quả loại nội dung Bài viết, một kết quả khác hiển thị kết quả Diễn đàn, một hiển thị loại nội dung Ảnh tùy chỉnh làm cho mỗi màn hình chạy chậm hơn. Hoặc nếu tất cả các Chế độ xem chia sẻ cùng một loại nội dung, nhưng chỉ khác nhau ở chỗ một chế độ có bộ lọc theo ngữ cảnh cho nid và các chế độ khác thì không, tất cả đều chậm lại?

Nếu tôi có 30 Hiển thị cho một chế độ xem, tôi có nên cấu trúc lại nó để mang lại lợi ích cho hiệu suất hay chỉ vì UI không có nghĩa là hiển thị nhiều Hiển thị đó.

Câu trả lời:


8

Code-khôn ngoan, cả Lượt xem và màn hình được thể hiện bằng các đối tượng. Khi Chế độ xem đang được xử lý, nó sẽ tải tất cả các hiển thị con của nó vào bộ nhớ, bất kể bạn chỉ hiển thị một Chế độ xem trong trang bạn đang xem. Trong khi các truy vấn cơ sở dữ liệu chỉ được thực hiện cho màn hình hoạt động, các thuộc tính của màn hình không hoạt động vẫn được tải vào bộ nhớ.

Điều này có nghĩa là nếu bạn có 50 màn hình trong một Chế độ xem, 50 màn hình sẽ được tải vào bộ nhớ, bất kể bạn chỉ hiển thị một trong số chúng. Vì vậy, câu trả lời cho câu hỏi của bạn là có, thông thường, bạn càng có nhiều màn hình hiển thị trong chế độ xem, Chế độ xem càng trở nên kém hiệu quả.

Với điều đó đã được nói, cá nhân tôi nghĩ rằng có bất kỳ nơi nào có từ 2-10 màn hình trong Chế độ xem sẽ chứng minh trí nhớ không đáng kể. Rốt cuộc, việc có một lượng hiển thị kín đáo trong Chế độ xem sẽ phục vụ mục đích thiết thực của nó (nếu không, tại sao chúng lại ở đó ngay từ đầu?).

Đối với câu hỏi thứ hai của bạn (tác động hiệu suất của các bộ lọc bổ sung, v.v.), có, việc thêm các tham số nhất định vào Chế độ xem của bạn sẽ ảnh hưởng đến hiệu suất. Nếu bạn muốn biết chính xác bao nhiêu, bạn có thể truy cập quản trị / cấu trúc / lượt xem / cài đặt (nếu bạn ở D7) và chọn Hiển thị thông tin và thống kê về chế độ xem trong khi xem trước trực tiếp , Hiển thị truy vấn SQLHiển thị thống kê hiệu suất . Dưới đây là ảnh chụp màn hình của màn hình hiệu suất:

Xem cài đặt hiệu suất

Nếu bạn quan tâm hơn đến hành vi của các truy vấn (có bao nhiêu hàng được phân tích, sử dụng khóa nào), bạn có thể sao chép truy vấn từ giao diện Lượt xem (một khi bạn đã chọn "Hiển thị truy vấn SQL") và phân tích truy vấn sử dụng explainlệnh MySQL . Có rất nhiều bài viết như thế này để explainsử dụng trên Google.


1
Một câu hỏi tiếp theo: Khi bạn nói các màn hình con được tải vào bộ nhớ, các tập kết quả của tất cả các màn hình được tải hay chỉ là các chuỗi truy vấn?
Dầu

1
@Pet FuelJelliffe Một thể hiện lớp đại diện cho mỗi màn hình được đính kèm với một thể hiện lớp View. Kết quả cơ sở dữ liệu chỉ được tìm nạp cho màn hình "hoạt động" hiện tại, do đó, không có trường hợp hiển thị đính kèm nào khác giữ kết quả cơ sở dữ liệu hoặc chuỗi truy vấn, cho vấn đề đó. Theo tôi biết, các chuỗi truy vấn trong màn hình Lượt xem chỉ được xây dựng cho màn hình hoạt động được thực thi.
barista nghiệp dư
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.