Kapan saya harus membuat lebih banyak Tampilan dari Tampilan daripada banyak Tampilan?

8

Apakah ini hanya masalah kenyamanan untuk membuat banyak Tampilan dari Tampilan daripada banyak Tampilan, atau apakah ada manfaat kinerja?

Apakah memiliki salah satu item berikut hadir di beberapa Layar tetapi tidak yang lain memengaruhi Tampilan secara keseluruhan?

  • filter kontekstual
  • filter tipe konten
  • pengumpulan

Misalnya, saya ingin tahu apakah memiliki tampilan hanya menampilkan hasil jenis konten Artikel, yang lain menampilkan hasil Forum, yang lain menampilkan jenis konten Foto kustom membuat setiap tampilan berjalan lebih lambat. Atau jika Tampilan semua berbagi jenis konten yang sama, tetapi hanya berbeda karena satu memiliki filter kontekstual untuk nid, dan yang lain tidak, apakah semuanya memperlambat?

Jika saya memiliki 30 Tampilan untuk satu tampilan, haruskah saya refactor untuk keuntungan kinerja, atau hanya karena UI tidak dimaksudkan untuk menunjukkan banyak Tampilan.

PetroleumJelliffe
sumber

Jawaban:

8

Dari segi kode, tampilan dan tampilan diwakili oleh objek. Ketika Lihat sedang diproses, itu memuat semua itu menampilkan anak ke dalam memori, terlepas dari apakah Anda membuat hanya satu Lihat di halaman yang Anda lihat. Sementara permintaan basis data dieksekusi hanya untuk tampilan aktif, sifat-sifat tampilan tidak aktif masih dimuat ke dalam memori.

Ini berarti bahwa jika Anda memiliki 50 layar dalam satu Tampilan, 50 layar akan dimuat ke dalam memori, terlepas dari apakah Anda hanya menampilkan satu saja. Jadi jawaban untuk pertanyaan Anda adalah ya, biasanya semakin banyak tampilan dalam tampilan yang Anda miliki, semakin tidak efisien tampilan menjadi bijaksana.

Dengan itu dikatakan, saya pribadi berpikir bahwa memiliki antara 2-10 tampilan dalam Tampilan harus terbukti dari sisi memori. Bagaimanapun, memiliki jumlah tampilan yang bijaksana dalam Tampilan memang melayani tujuan praktisnya (jika tidak, mengapa mereka ada di sana?).

Mengenai pertanyaan kedua Anda (dampak kinerja filter tambahan, dll), ya, menambahkan parameter tertentu ke Tampilan Anda akan memengaruhi kinerja. Jika Anda ingin tahu persis berapa banyak, Anda bisa pergi ke admin / struktur / tampilan / pengaturan (jika Anda berada di D7) dan pilih Tampilkan informasi dan statistik tentang tampilan selama pratinjau langsung , Tampilkan kueri SQL , dan Tampilkan statistik kinerja . Ini adalah screenshot layar kinerja:

Melihat pengaturan kinerja

Jika Anda lebih tertarik pada perilaku kueri (berapa banyak baris yang dianalisis, tombol mana yang digunakan), Anda dapat menyalin kueri dari antarmuka Views (setelah Anda memilih "Tampilkan SQL query"), dan menganalisis kueri menggunakan explainperintah MySQL . Ada banyak artikel seperti ini untuk explainpenggunaan di Google.

barista amatir
sumber
1
Satu pertanyaan tindak lanjut: Ketika Anda mengatakan tampilan anak dimuat ke dalam memori, apakah set hasil semua tampilan dimuat, atau hanya string kueri itu sendiri?
PetroleumJelliffe
1
@PetroleumJelliffe Sebuah instance kelas yang mewakili setiap tampilan dilampirkan ke instance kelas tampilan. Hasil database hanya diambil untuk tampilan "aktif" saat ini, sehingga tidak ada contoh tampilan terlampir lainnya yang menyimpan hasil database atau string kueri, dalam hal ini. Sejauh yang saya tahu, string kueri dalam tampilan Views dibuat hanya untuk tampilan aktif yang dieksekusi.
amatir barista