Cache Halaman Penuh pada CE 1.8 - Modul FPC Magento? Pernis? Kedua?

15

Jadi saya agak bingung ketika meneliti tentang Caching Halaman Penuh untuk Edisi Komunitas 1.8. Saya sudah mengimplementasikan Two Level Redis Cache, CDN, mengatur my.cnf MySQL untuk kinerja maksimal (tentunya DB berada di server terpisah), dan saya memiliki 2 server hosting toko kami di belakang load balancer. Saya mengatakan bahwa untuk menunjukkan bahwa saya tidak segera melompat untuk FPC sebelum melakukan tweak kinerja awal.

Saya belum pernah menggunakan Varnish sebelumnya di situs apa pun, apalagi Magento, dan saya juga belum pernah memasang FPC di Magento. Saya memahami Varnish sebagai proxy yang bertindak sebagai persilangan antara CDN dan cache halaman sendiri, mengirimkan data ke browser sebelum permintaan bahkan sampai ke server web. Dan menurut pemahaman saya, Modul FPC membuat cache secara lokal yang disajikan oleh server web itu sendiri. Saya tahu bahwa untuk kedua pengaturan, Anda perlu melakukan beberapa "Lubang Punching" untuk mendapatkan konten dinamis melalui browser (meskipun tekniknya berbeda, antara menggunakan modul atau menggunakan Varnish). Tolong koreksi saya jika saya salah paham apa pun di sini.

Sampai sekarang, saya menganggap mereka sebagai dua entitas terpisah yang dapat Anda implementasikan untuk membantu situs Anda, tetapi sekarang sesuatu yang saya baca tampaknya menyiratkan sebaliknya. Rencana asli saya adalah untuk membeli modul " Warp Advanced Full Page Cache " untuk Magento (Sebelumnya "Tiny Brick Lightspeed FPC", saya percaya) karena tampaknya menjadi yang paling populer, jika sentuhan pada sisi harga (tapi, terus terang , $ 350 tidak banyak untuk perusahaan kami, terutama untuk apa yang dapat dilakukannya). Saya dan 2 rekan pengembang saya berencana untuk belajar menerapkannya dengan benar dan sepenuhnya dalam kebiasaan kami sendiri, tema buatan sendiri untuk memaksimalkan apa yang bisa kami dapatkan darinya. Setelah itu selesai, di beberapa titik di jalan, saya pikir saya akan melihat ke dalam menerapkan Varnish juga - tetapi, seperti yang saya katakan sebelumnya, saya mengerti mereka terpisah.

Namun sekarang, saya mulai menemukan ekstensi seperti PageCache ini Didukung oleh Varnish yang gratis, atau Vortex Cache ini Didukung oleh Varnish Cache yang hampir $ 800 USD, yaitu modul Cache Halaman Penuh Magento yang bekerja langsung dengan Varnish.

Pertanyaan saya kepada Anda, tumpukan pertukaran, adalah bagaimana saya harus melihat FPC dan Varnish? Sebagai entitas yang terpisah? Jika demikian, apakah mereka saling eksklusif? Apakah mereka dua sisi dari koin yang sama yang harus saya terapkan bersama? Atau apakah mereka serupa tetapi tidak eksklusif atau inklusif satu sama lain?

Bisakah saya menggunakan Warp Advanced FPC yang saya sebutkan di atas dengan Varnish? Haruskah saya menggunakannya dengan Varnish? Atau lebih baik menggunakan FPC yang berbeda jika saya berencana menggunakan Varnish? ATAU lebih jauh lagi, adakah FPC yang begitu bagus sehingga saya tidak membutuhkan Varnish? Atau sebaliknya, haruskah saya menggunakan Varnish dan membuang ide FPC?

Maaf untuk dinding teks, tetapi saya telah melihat banyak artikel, blog, dan posting forum, dan saya belum dapat menemukan jawaban yang pasti untuk pertanyaan-pertanyaan itu. Saya sangat menghargai bantuan dan masukan Anda dalam hal ini =)

Oh dan terakhir, pertanyaan singkat tentang Varnish dan webservers. Saat ini saya menggunakan setup stack Apache LAMP normal, tetapi untuk sementara sekarang saya telah melihat orang-orang rave tentang menggunakan Nginx dengan Magento. Saya telah melakukan beberapa tes sendiri, stress dan load test, dan tampaknya itu pasti dapat bekerja sedikit lebih baik dalam kondisi yang tepat. Karena itu, saya sedang mempertimbangkan untuk beralih di beberapa titik dalam waktu dekat. Apakah ini akan mempengaruhi keinginan dan keputusan saya untuk menggunakan FPC dan / atau Varnish?

Terima kasih!!!

EDIT: Oh! Dan satu pertanyaan lagi - Karena saya memiliki dua server yang meng-hosting situs saya di belakang load balancer (yang juga merupakan pengaturan yang dapat ditingkatkan secara horizontal jika diperlukan), saya menggunakan penuh Redis dan Memcached yang dihosting di server terpisah dari server. Web dan DB untuk sesi saya dan setiap tingkat dari Cache Dua Tingkat Magento (yah, Zend). Saya berasumsi FPC akan menyimpan data itu di salah satu dari mereka ke sistem? Apakah saya perlu memiliki ekstensi khusus untuk menyimpannya di sana atau apakah mereka semua melakukannya? Dan sementara saya berasumsi tidak, apakah ini akan mempengaruhi Varnish? Terima kasih lagi!!

ItuSourDiesel
sumber
Rupanya saya hanya bisa meletakkan dua tautan di dinding teks saya karena kurangnya reputasi saya. Apa cara untuk mendorong saya pergi troll untuk poin internet ... Yang mengatakan, di sini adalah link: Vortex Cache didukung oleh Varnish Cache aaand PageCache didukung oleh Varnish
ThatSourDiesel
3
Saya tidak dapat menawarkan banyak saran tentang Varnish, tetapi saya sarankan melihat Lesti FPC - gordonlesti.com/lestifpc Ini sepenuhnya gratis, memiliki lubang meninju, dapat dikonfigurasi melalui admin. Benar-benar brilian.
Paul
@ThatSourDiesel - dapatkah Anda memberi tahu kami apa yang Anda lakukan? Lebih disukai di bawah jawaban yang diterima, jika Anda menggunakannya untuk solusi Anda setidaknya.
SPRBRN

Jawaban:

28

Ada dua hal sulit dalam ilmu komputer:

  1. Memberi nama benda
  2. Pembatalan cache.

Lubang meninju masuk dalam kategori # 2 :)

Umum

Pendekatan terbaik adalah mulai dari titik terendah tumpukan dan mengoptimalkan hingga bagian depan Magento.


Basis Data dan Sistem File

Harus selalu menjadi area pertama yang menjadi fokus. Karena. I / O.

MyTop adalah skrip perl berbasis Linux yang berguna yang akan meniru perintah 'top' Linux dan memberi Anda wawasan tentang keadaan instance MySQL Anda.

Htop adalah top yang lebih kuat , Fitur strace dapat membantu menentukan seluk beluk suatu proses untuk menemukan kemacetan potensial.

Iotop adalah alat lain yang perlu dipertimbangkan untuk memantau I / O.

Skrip utilitas berguna lainnya seperti mysqltuner.pl dan primer tuning mysql dapat menawarkan wawasan tentang variabel runtime MySQL Anda dan menawarkan saran untuk membantu. Ingatlah bahwa ini dimaksudkan sebagai panduan karena pendekatan terbaik selalu berupa evaluasi persyaratan dan penyesuaian berdasarkan data yang diketahui. Melakukan hal itu secara buta dapat menyebabkan lebih banyak kerusakan di kali daripada kebaikan. Dan secara prematur menjalankan ini tanpa setidaknya 24 jam variabel runtime mysql dapat menawarkan saran yang buruk.

Perlu diingat Percona , MariaDB dan standar MySQL harus bekerja dengan semua hal di atas. Menguntungkan Percona sebagai garpu MySQL, karena Magento begitu berat di InnoDB dan XtraDB menawarkan banyak alat dan perangkat tambahan untuk mesin db.


Apache atau Nginx

Masih menggunakan Apache karena telah melayani banyak orang lain dengan baik, termasuk saya. Saya telah menggunakan dan mengkonfigurasi Nginx juga. Meskipun menawarkan beberapa keuntungan, ada kurva belajar. Walaupun keduanya merupakan opsi yang populer, ia menawarkan beberapa kelebihan dibandingkan Apache, yang satu akan menjadi jejak memori yang lebih kecil. Namun Apache dengan downed yang menjalankan PHP-FPM akan memiliki jejak memori yang serupa.

Inti masalah:

Karena artikel ini adalah tentang kinerja, saya harus menunjukkan bahwa salah satu cara termudah untuk membantu apache keluar dari caranya sendiri adalah dengan tidak menggunakan file .htaccess. Masukkan apa yang Anda taruh di sana dalam bait Direktori Anda, atur AllowOverride ke "None" dan Anda akhirnya tidak meminta apache untuk menelusuri seluruh jalur dokumen untuk mencari tahu apakah perlu memperhatikan .htaccess atau tidak. Ini adalah petunjuk penyetelan dasar yang sederhana yang sepertinya banyak orang lewatkan.

Untuk membantu memfasilitasi check out ini:

Memanfaatkan CDN untuk membantu mengurangi keduanya akan jelas tetapi akan menambah manfaat pada optimasi frontend karena sebagian besar pengguna akhir browser akan dapat terhubung ke kedua server dengan jumlah batas koneksi yang sama. Ini juga membebaskan Apache dari tidak harus melewati pemeriksaan dan semacamnya hanya untuk menyajikan gambar statis sederhana. Lighthttpd adalah opsi jika Anda ingin menjalankan server web statis hanya untuk konten selain CDN.

PHP

PHP-FPM dan APC. Gunakan mereka, hapus modul PHP yang tidak dibutuhkan atau tidak diperlukan yang tidak diperlukan untuk Magento.


Basis kode Magento

AOE_TemplateHints sangat bagus untuk menentukan apakah blok Anda di-cache dengan benar:

AOE_Profiler baik untuk profil, pastikan dan aktifkan profil lapisan DB-nya (jelas di lingkungan lokal / dev). Ini dalam hubungannya dengan alat mytop yang disebutkan sebelumnya membuat menemukan perilaku buruk SQL menjadi tugas yang lebih mudah.

Modul pihak ke-3 & kode khusus

Beberapa praktik terbaik yang sangat baik untuk optimasi dari Magento sendiri adalah bacaan yang baik, dan perlu diingat ketika meninjau modul pihak ke-3 sebelum menggunakannya. (ada banyak IMO yang berperilaku buruk).

Alat Magniffer dari Magento ECG akan membantu dengan mudah mengidentifikasi kode perilaku buruk berdasarkan PDF yang diberikan di atas. Ini berbasis symfony / php-parser namun dapat diinstal melalui komposer.


Pernis

seseorang tidak hanya menyalakan pernis

Sebagai advokat Varnish yang menjadi penulisnya adalah dev kernel FreeBSD, ia menawarkan beberapa waktu muat sub detik yang gila. Namun, jika Anda bahkan memiliki beberapa perbedaan kecil dalam template Anda yang tidak keluar dari kotak, Anda akan menghabiskan waktu mengkonfigurasi pernis / magento untuk menyelesaikan konten yang Anda butuhkan. Sebagian besar yang saya lihat hanya akan AJAX'ify item yang dibutuhkan tidak terlepas dari Varnish.

Ada sejumlah modul Magento untuk membantu memfasilitasi lubang meninju dan caching ini:

Pada akhirnya ini harus di akhir perjalanan optimasi Anda, dan MUNGKIN memerlukan beberapa penyesuaian untuk memperbaiki keadaan.


Magento CE FPC

Sejauh ini CE FPC terbaik yang saya temukan adalah: Lesti :: FPC

ini adalah open-source yang disusun dengan sangat baik (semua berbasis pengamat) dan FPC gratis untuk Komunitas.


Pada akhirnya, gunakan pengujian dan penilaian Anda sendiri.

Beberapa bacaan lebih lanjut:

B00MER
sumber
2

Agak terlambat untuk utas ini saya tahu tetapi jika Anda masih mencari solusi maka Anda mungkin ingin mempertimbangkan, Evolved Caching . Ini harga yang sama dengan Warp, tetapi:

  • Sangat cepat dan mudah untuk menginstal dan mengkonfigurasi - semua lubang meninju dan konfigurasi dilakukan dari dalam admin
  • Terintegrasi langsung dengan Varnish dan memungkinkan Anda membersihkan dan menghangatkan cache Varnish Anda dari dalam Magento
  • Bekerja dengan form_key frontend diperkenalkan pada 1,8 CE di Varnish dan cache itu sendiri.
  • Sangat aktif dikembangkan dengan dukungan responsif. Versi baru reguler dengan tujuan untuk merilis perbaikan bug dalam beberapa hari setelah pelaporan
  • Memiliki dokumentasi yang luas yang diperbarui dengan setiap rilis

Menyiapkan dengan Varnish secara langsung, Anda hanya perlu mengaktifkan pengaturan admin dan menggunakan .vcl yang ditemukan di sini . Anda juga tidak terbatas pada Varnish hanya melayani cache ketika tidak ada cookie seperti biasa - Anda mendapatkan tingkat hit cache yang sangat tinggi.

Jonathan Hussey
sumber
Oh wow, menarik. Saya pasti akan memeriksanya. Saya harus mengirim pembaruan ke sini. Pada dasarnya, saya telah memutuskan untuk pergi dengan Varnish daripada modul cache halaman penuh, tapi saya sedikit terjebak pada apa yang harus dilakukan tentang bagian dinamis. ESI vs AJAX, untuk sebagian besar. Saya mencoba Varnish dengan Turpentine, tetapi ketika saya memiliki masalah menambahkan barang ke kereta - saya menariknya. Ternyata masalah terkait dengan sesi save handler sesi memcached saya, saya akhirnya menemukan nanti. Jadi, yang mengatakan, saya masih ingin mendapatkan Varnish kembali, tetapi perlu meluangkan waktu memastikan semua bagian dinamis saya berfungsi dengan baik.
ThatSourDiesel
1
Tentu ok Saya tidak berpikir bahwa Turpentine belum berfungsi dengan 1.8 CE karena dimasukkannya form_key di frontend - ini bisa jadi mengapa Anda memiliki masalah dengan menambahkan ke keranjang. Secara pribadi saya akan merekomendasikan Ajax lebih dari ESI terutama karena ESI mengharuskan Anda untuk mengirim permintaan ke Magento sebelum halaman dikirim dan ini akan selalu lambat. Anda mungkin tertarik untuk melihat postingan ini. fabrizio-branca.de/magento-varnish-ajax-vs-esi.html .
Jonathan Hussey
Saya suka blog Fabrizio! Jelas terlihat bahwa modul AJAX-nya - itulah yang saya maksud ketika saya menyebutkan AJAX dalam komentar terakhir saya. Masalah add to cart yang saya alami adalah karena sesuatu yang aneh dengan memcached yang berhasil saya perbaiki, sebenarnya. Yang mengatakan, meskipun mereka mengatakan Turpentine tidak bekerja dengan 1,8 kecuali jika Anda menonaktifkan form_key, sepertinya berfungsi dengan baik untuk saya. Namun, saya belum sepenuhnya memahami ESI pada saat itu, jadi sejak dinonaktifkan, saya bisa menghabiskan lebih banyak waktu untuk mengimplementasikan dan menguji. Saya melewatkan sedikit pekerjaan baru-baru ini - patah tulang selangka, harus dioperasi.
ThatSourDiesel
BTW, Evolved Caching adalah modul Anda sendiri ?? Hanya ingin tahu - apakah Anda bersedia membiarkan saya mencobanya di server pementasan saya? Kita dapat membahas dalam nama domain PM dan apa yang tidak sehingga Anda dapat memverifikasi itu sebenarnya server uji dan bukan produksi =)
ThatSourDiesel
Saya harap Anda pulih setelah operasi! Ya modul ini dikembangkan oleh perusahaan saya dan ya kami sangat senang membiarkan Anda mengujinya pada domain staging / dev. Cukup kirimkan email kepada kami menggunakan alamat email layanan pelanggan di kolom kiri toko kami dan saya akan mengambilnya - store.husseycoding.co.uk . Sebagai catatan, senang Anda tetap masalah memcached, perlu dicatat mungkin itu add to cart dapat muncul untuk bekerja di bawah 1,8 untuk pengguna yang menyebabkan halaman untuk cache kunci bentuk mereka juga cache, tetapi menghapus cookie Anda untuk mendapatkan baru kunci sesi + form dan Anda mungkin akan menemukannya gagal.
Jonathan Hussey
1

Kami telah menulis FPC yang kompatibel dengan kunci formulir Magento 1.8 baru. Cache Halaman Penuh Brim: http://ecommerce.brimllc.com/full-page-cache-magento.html

BOOMER membuat poin yang bagus tentang memulai dari yang terendah di stack dan meningkatkannya. FPC atau Varnish harus tentang yang terakhir Anda lakukan. Kami melakukan audit kinerja dan biasanya menemukan masalah dengan konfigurasi MySQL dan APC yang benar-benar tidak aktif. Seperti ukuran buffer Innodb diatur ke default dan database telah berkembang jauh melewatinya.

Kami menyarankan Anda untuk tidak menggunakan FPC dengan Varnish, kecuali jika dirancang khusus untuk bekerja bersama. Secara umum, kami tidak merekomendasikan Varnish kecuali Anda memiliki beberapa server yang gemuk yang semuanya telah disetel bersama dengan basis kode Anda dan masih berjuang untuk menjaga lalu lintas. Memperbarui konten dinamis bisa rumit dengan Varnish khusus ketika mencoba membatasi permintaan Anda ke backend Magento dan pada gilirannya mengurangi beban. Jika Anda memiliki satu atau dua kepala web, keuntungannya mungkin tidak sebanding dengan waktu dan kerumitannya.

Dalam sebagian besar situasi, FPC yang baik akan memberi Anda kinerja yang Anda butuhkan, tentu saja setelah server dan basis kode Anda disetel. Dengan FPC kami, Anda bisa mendapatkan sub generasi 15ms kali pada cache level 1 dan sub 100ms pada cache standar. Cache level 1 kami digunakan untuk kasus-kasus di mana pengguna tidak login dan tidak memiliki apa-apa di keranjang mereka karena tidak melakukan hole hole. Ketika salah satu dari kondisi tersebut salah, cache standar digunakan dengan dukungan meninju lubang penuh.

FPC kami memiliki tinju lubang yang mudah dibangun dan bekerja di luar kotak dengan semua blok Magento standar serta setiap blok khusus yang mungkin Anda miliki. Semua dapat dikonfigurasi melalui panel admin.

Saya sarankan tetap menggunakan Redis kecuali Anda mengalami masalah penskalaan dengan Redis. Ini memiliki dukungan tag dan jauh lebih cepat daripada memcached dengan file atau database sebagai backend lambat. Jika Anda ingin tag dan pembersihan yang konsisten, Anda harus menggunakan memcached dengan database ketika Anda memiliki beberapa web head. Dengan dukungan tag Redis bawaan, Anda tidak perlu khawatir. Anda juga dapat menggunakan Redis untuk sesi Anda.

Saya dapat berbicara untuk semua FPC, tetapi dengan kami, Anda dapat mengonfigurasi melalui admin tempat menyimpannya. Anda dapat memilih untuk menggunakan backend cache Magento default atau menentukan pengaturan kustom untuk menggunakan File, Database, APC, Redis, Memcache, dan backend File yang Dioptimalkan.

BrimSeth
sumber
Dapat menjamin pengiriman sub-20ms ke browser. Hanya Magento FPC yang pernah kulihat di toko sungguhan.
Melvyn
0

Tidak ada jawaban yang benar. Toko harus memiliki muatan halaman dinamis sub 3s dan idealnya memuat halaman dinamis 1-2 detik, sub detik tidak diperlukan dan terutama merupakan statistik yang digerakkan oleh pemasaran. Apache mudah dipelajari dan sulit untuk tampil, Nginx sulit untuk dipelajari dan mudah untuk melakukan, banyak situs pindah ke Nginx namun untuk memiliki arsitektur berkualitas tinggi berdasarkan Nginx dan Magento tidak sederhana.

Cluster Magento multi-server sudah kompleks untuk diterapkan, dan bahkan lebih sulit untuk dipertahankan jika tidak pada arsitektur yang benar, kami biasanya bekerja dengan kluster yang lebih besar yang membuat semuanya berjalan lebih lancar termasuk peringkat. Kami melakukan ini dengan konfigurasi pemasangan standar dengan perubahan kecil untuk stabilitas jangka menengah hingga panjang yang menargetkan pemuatan halaman dinamis 1-2s, menjadikan segalanya lebih mudah untuk pemeliharaan.

Pernis bisa menjadi FPC, CDN antara lain, namun dalam kasus Anda yang terbaik adalah menganggapnya sebagai FPC. FPC memungkinkan lebih banyak pengunjung di server dan memberikan pengiriman statis yang lebih cepat yang Varnish adalah salah satu alat tersebut, namun ada berbagai masalah dengan itu termasuk konten dinamis, kontrol stok, harga. Jawabannya adalah bagaimana bisnis Anda terstruktur, bagaimana data Anda dimuat, seberapa sering, jenis hosting Anda dan banyak lagi, apakah bisnis Anda terpengaruh dengan menyediakan konten statis kepada pengunjung. Anda secara teknis dapat mengurangi banyak hal ini dengan konfigurasi FPC namun hal itu mempersulit lingkungan bisnis, dari perspektif pemilik bisnis, hal itu mungkin tidak menghasilkan pengembalian investasi yang seimbang.

FPC adalah bagian terakhir jika Anda memiliki sub 3s atau pemuatan dinamis yang lebih baik, arsitektur Anda dapat menangani tingkat permintaan pengunjung karena hal ini memengaruhi peringkat, menyerap lonjakan pemasaran dan liburan, dan memiliki anggaran untuk menambah kompleksitas dalam arsitektur server - hosting harus 0,5 -1% dari pendapatan untuk bisnis kecil, sebagian besar berjalan secara substansial di bawah ini menyebabkan banyak masalah bisnis tidak langsung.

Alasan Anda belum menemukan jawaban yang pasti adalah karena fakta bahwa pertanyaan-pertanyaan itu membutuhkan waktu berbulan-bulan untuk dijawab karena bersifat kualitatif (berbasis bisnis) yang memerlukan informasi yang tidak ingin dikirim oleh perusahaan kepada publik, kecepatan pemuatan laman kuantitatif (berbasis teknis) ) yang dapat diposting secara publik, itu adalah bagaimana Anda menggabungkan keduanya yang membuat solusi.

Teknologi Vanquish
sumber
-2

Anda dapat menggunakan cache halaman Magento ini yang sesuai dengan kebutuhan Anda dan mirip dengan pernis. Ini digunakan oleh banyak toko Magento terbesar. Beberapa fitur:

  1. Seperti Varnish, ia tidak menggunakan koneksi database untuk 90% permintaan. Sebagai hasilnya, ini sangat cepat
  2. Ini memiliki kemampuan untuk membuka halaman secara otomatis ketika hal-hal seperti perubahan inventaris produk dan itu sangat bagus
  3. Ini adalah cache yang berlapis-banyak sehingga juga mendukung pelubang kertas saat pengguna masuk (permintaan ini membutuhkan penggunaan basis data)

Sebagai cache multi-level, scalable bahkan untuk toko dengan traffic tertinggi dan telah digunakan pada banyak situs dengan traffic tinggi yang menerima traffic puncak seperti toko yang ditampilkan di SharkTank (acara tv)

Extendware
sumber
Ini tidak menjawab pertanyaan penulis apakah pernis atau FPC harus digunakan.
Steve Robbins
@extendware, Anda harus mengungkapkan ketika Anda adalah pembuat produk. Kami menyambut kontribusi yang berharga, tetapi kami tidak menerima spam langsung.
philwinkle