Saya ingin tahu apakah ada yang melakukan "cache" proses bootstrap di Drupal.
Biasanya, Drupal akan menjalankan 7 fase bootstrap pada setiap permintaan, tetapi mungkin pada sistem produksi yang digunakan, seseorang dapat "menghapus" dengan beberapa atau semua ini?
Saran yang mungkin saya pikirkan bisa jadi
- Melakukan serialisasi status bootstrap dan menempelkannya ke memcache
- Sebuah skrip dapat menghasilkan tambalan untuk bootstrap.inc yang akan meng-hardcode informasi tertentu ke dalam file.
- Saya percaya David Strauss telah mencoba untuk membuat Drupal bootstrap berjalan di libevent.
- Kegilaan lainnya?
Upaya apa yang ada, dan yang diketahui (agak) dapat diandalkan?
performance
bootstrapping
Pelajaran
sumber
sumber
Jawaban:
PHP adalah arsitektur apa-apa yang dibagikan. Itu memiliki kelebihan dan kekurangan.
Salah satu kelemahannya adalah tidak mudah melakukan hal seperti ini. Tidak banyak keadaan yang bisa disimpan di suatu tempat.
Saya melakukan beberapa tes cepat dan ketika login, maka boostrap tampaknya memakan waktu ~ 17% dari total waktu dan lebih dari 50% dari yang sebenarnya memuat semua file .module dan .inc. Itu bukan sesuatu yang bisa Anda simpan di memcache. Selain itu, tampaknya tidak terlalu menjadi masalah jika saya menggunakan memcache atau cache basis data.
Saya mencoba untuk mendapatkan beberapa hasil ketika memiliki cache halaman diaktifkan, tetapi Xhprof tampaknya tidak mengembalikan hasil yang dapat dipercaya kemudian; semuanya sepertinya terlalu cepat. Tetapi bahkan kemudian, bagian terbesarnya melibatkan mengeksekusi init / hooks keluar dan memuat file tampaknya. Saya menemukan masalah yang menarik di sana: Sepertinya modul Pengguna secara serius memperlambat respons halaman yang di-cache karena memicu registri karena pengontrol entitas dalam file .module.
Yang mengatakan, David Strauss menunjukkan beberapa karya eksperimental di Kopenhagen di mana ia membuat snapshot memori setelah bootstrap dan kemudian kembali ke itu setelah halaman disajikan. Dia menggunakan Drupal 6 untuk itu. Setelah melihat angka-angka di atas, saya membayangkan bahwa keuntungan kinerja melakukan ini di Drupal 7 akan sedikit lebih kecil. Salah satu alasan untuk ini adalah bahwa koneksi database malas dimuat (Dan Anda bisa mendapatkan cukup jauh di bootstrap saat menggunakan misalnya Memcache sebelum Anda perlu menjalankan permintaan pertama) dan ada banyak yang di-cache.
Apa yang benar - benar buruk di Drupal 7 adalah lapisan render dengan array besar ini dan perulangan dan loop tak berujung. Itu cukup banyak membatalkan semua pekerjaan kinerja yang masuk ke Drupal 7. Mari kita lihat tampilannya di Drupal 8, jika Twig membuatnya menjadi inti.
Terakhir, tentang kelebihan yang disebutkan. Satu keuntungan besar adalah bahwa leek memori agak tidak relevan karena semuanya dibebaskan setelah setiap permintaan. Saya telah melihat banyak aplikasi Java di mana penggunaan memori terus meningkat dan perlu restart secara teratur.
sumber
Tidak, itu David Strauss yang sedang bereksperimen dengan peristiwa-kargo (sekarang disebut Kellner) di https://code.launchpad.net/~fourkitchens/pressflow/6-ditemukan tetapi saya ragu ada yang serius keluar dari sana.
Drupal 7 memang memiliki banyak bootstrap yang sudah di-cache, ada tempat
cache_bootstrap
sampah untuk itu. Anda bisa menempelkannya ke memcached.Anda dapat berlebihan dan mengurangi pemuatan kode dengan memindahkan beberapa / banyak kode Drupal ke C. Damien dan dhthwy membuat ekstensi PHP di http://drupal.org/project/drupal_php_ext tidak banyak yang dilakukan dengan itu. Atau lakukan hiphop. Saya tidak tahu keadaan hiphop & Drupal 7 saat ini.
Namun, pada akhirnya, Anda perlu mencermati biaya rekayasa, katakanlah, mendapatkan pekerjaan hiphop dengan Drupal 7 (dan semua kontribusinya!) Dan membandingkannya dengan menyewa beberapa server lagi. Jika Anda dapat menyimpan, katakanlah 5% dari server Anda dan Anda memiliki 100.000 server, lakukan saja, tetapi apakah Anda Facebook? Berhati-hatilah dan hemat dengan optimisasi.
sumber
Melihat presentasi yang menarik tentang doh (Dynamic Object Handler) pada pertemuan Drupal Kinerja Tinggi . Singkatnya dia berbicara tentang bootstrap drupal dengan cepat dengan menggunakannya. Menarik sekitar pukul 15:30. Isi ulang steroid secara singkat dengan runkit secara fungsional juga. QA pada tanda 33:00.
sumber