Saya tahu tidak ada perbedaan kinerja rendering yang signifikan antara banyak parsial dan satu tampilan tunggal ketika Anda merender konten yang sama .
Jelas, jika Anda membuat hanya sebagian sebagian dalam beberapa kasus dan lain-lain dalam kasus lain, secara efektif mengurangi volume rendering dari tampilan tertentu, daripada Anda mungkin mendapatkan beberapa kecepatan.
Di sisi lain, saya selalu mempertimbangkan abstrakisasi parsial yang harus digunakan setidaknya dari 2 tempat yang berbeda untuk membenarkan keberadaan mereka. Alasan lain untuk menggunakan parsial adalah ketika Anda ingin membuat tampilan yang sama tetapi memuat parsial berbeda berdasarkan beberapa logika bisnis yang Anda miliki.
MEMPERBARUI:
Saya tidak dapat menawarkan pengukuran atau angka konkret tentang kecepatan rendering. Jika Anda menggunakan sebagian dalam tampilan, untuk merendernya Anda memanggil metode render, jadi ada panggilan metode kedua. Ini, seperti yang saya katakan dalam jawaban saya, hampir tidak ada tetapi dapat membantu mempercepat sedikit.
Namun saya tidak pernah mendengar proyek memperbaiki masalah kinerjanya dengan menghapus sebagian. Sebagian adalah cara yang baik untuk menawarkan mekanisme penggunaan kembali untuk pandangan dan dari pandangan programmer mereka harus digunakan untuk lingkup itu. Mereka harus abstrakisasi untuk konsep umum dalam pandangan.
Saya bekerja pada sebuah proyek di mana sebagian digunakan secara berlebihan. Bukan Rails, tetapi prinsip-prinsip MVC yang sama. Menggunakan parsial kecil untuk semua yang dapat Anda bayangkan membuatnya sulit ditemukan ketika Anda mulai memiliki lusinan. Di mana Anda akan mencari input yang akan dimodifikasi? Dalam tampilan? Secara parsial? Di bagian mana, ada 4 bagian untuk tampilan ini? ...
Setelah beberapa perbaikan keras, dengan setiap pembaruan tampilan, kami menghapus sebagian yang tidak perlu. Mereka tidak hilang sepenuhnya, tetapi yang tersisa adalah abstrakisasi yang didefinisikan dengan baik untuk proyek tersebut. Mereka mewakili elemen yang dipahami dengan baik (seperti pohon untuk beberapa jenis objek, atau jenis daftar tertentu) yang diulang dalam bentuk atau lainnya pada beberapa tampilan. Saya tahu jika saya melihat pohon bahwa ada sebagian untuk itu. Saya tahu ketika saya melihat jenis daftar tertentu yang ada sebagian untuk itu. Saya tidak harus memburu mereka.
Keterbacaan kode adalah hal terpenting yang dapat dilakukan seseorang untuk basis kode perangkat lunak.
Code readability
, itu semua tentang.Saya tidak setuju dengan kedua jawaban itu. Saya telah menyalin dan menempelkan kode dari sebagian ke posisi yang ada dalam tampilan induk parsial dan dengan 500 iterasi, ini membutuhkan 600ms besar dari waktu yang diperlukan untuk membuat tampilan. <% = render xyz%> menurut saya sangat rusak.
Contoh, total waktu untuk membuat tampilan:
Diedit
Saya akhirnya menghapus semua _partials dalam parsial _model dan mendapatkannya ke ~ 2000ms, pada saat itu saya mencoba memindahkan parsial _model ke dalam indeks namun ini TIDAK memiliki pengaruh pada rendering kali jadi saya kira itu dengan panggilan untuk membuat bersarang membuat melakukannya.
sumber
Bukan orang yang suka rel, tapi Partial Views sepertinya bukan masalah. Sebaliknya, sepertinya Anda melakukan sedikit SELECT N +1. Lihat hal-hal dari perspektif server DB untuk memastikan Anda tidak mengalahkannya.
sumber
Bekerja pada aplikasi Rails 4.2 saat ini di mana tindakan lambat yang mengambil rata-rata sekitar 745 ms.
Ketika saya menghapus kode dari parsial dan menempatkannya ke templat utama, waktu yang dibutuhkan sekarang rata-rata kurang dari 25 ms.
Jumlah panggilan untuk membuat parsial hanya 29.
sumber
Bahkan jika Anda tidak memiliki masalah n +1 dan melakukan semua pekerjaan database di depan (katakanlah dengan CTE rekursif), parsial bersarang masih sangat lambat. Haml dan Erb keduanya tampak lambat bagiku. Pada Rel 5.1.4 Saya melihat beberapa milidetik untuk setiap parsial, ditambah sesekali parsial yang jauh lebih buruk (mungkin terkait dengan pengumpulan sampah).
Saya perhatikan bahwa jika saya mengganti nama sebagian saat salah satu permintaan ini berjalan, saya segera mendapatkan kesalahan tentang bagaimana file tidak ditemukan. Jadi rupanya Rails membaca sebagian dari disk, mem-reparsing, dan mengevaluasinya untuk setiap iterasi. Tidak heran lambat!
sumber
Banyak kelambatan yang terlihat pada parsial bersarang hanya terjadi selama perkembangan. Beralih ke produksi untuk menguji.
sumber