Manfaat kinerja cache halaman penuh di Magento Enterprise cukup terkenal. Apa yang mungkin tidak begitu terkenal adalah agar manfaat penuh dari hal ini dapat direalisasikan, itu harus diisi penuh dan panas, terutama pada set produk besar di mana Anda tidak hanya memiliki beberapa halaman sehingga memanfaatkan lalu lintas organik untuk Perdana cukup cepat.
Magento mencakup cronjob bawaan untuk merayapi situs dan menghangatkan FPC di pagi hari.
Saya telah melihat dan mendengar masalah yang disebabkan oleh pekerjaan di pagi hari yang terlalu lama untuk dijalankan, menghalangi pekerjaan lain agar tidak berjalan, dan ingin tahu apa yang orang lain gunakan atau sarankan digunakan untuk melakukan hal ini. Beberapa ide yang saya miliki adalah:
- Kumpulkan skrip shell untuk merayapi setiap halaman dalam file sitemap yang dihasilkan.
- Gunakan entri crontab terpisah dan skrip PHP pendek untuk mem-bootstrap Magento dan menjalankan proses crawler secara langsung.
Semua pemikiran dan / atau pengalaman tentang ini disambut baik!
sumber
Jawaban:
Anda bisa menggunakan pengepungan dalam kombinasi dengan
sitemap.xml
file, seperti yang dilakukan MageSpeedTest .Lalu lari
Konten bersumber dari sini .
sumber
–delay
Kami hanya tidak - sama sekali. Pernah. Kami akan mengatakan ini berulang kali tetapi
Situs Anda perlu untuk menjadi cepat tanpa penambahan FPC (atau Varnish untuk fakta bahwa). Akan selalu ada saat ketika konten tidak prima (skenario Anda di atas).
Di toko yang tidak dibongkar, waktu muat halaman dengan FPC seharusnya tidak lebih mengesankan daripada non-FPC; Magento cukup senang mampu
< 400ms
memuat halaman kali pada cache standar (pada kategori / produk / halaman pencarian). FPC akan membawanya ke< 80ms
- tetapi dilengkapi dengan peringatan.Item baru / pencarian yang lebih relevan sudah kedaluwarsa hingga valid atau TTL berakhir
dll.
Mengapa mengandalkan FPC (atau Varnish) adalah A Bad Idea
Jika Anda ingin memastikan bahwa cache tersimpan secara manual, kemungkinan ada beberapa alasan
Anda tidak dapat menyimpan semuanya
Jika Anda mengambil toko dengan hanya 5 kategori, kedalaman 2 tingkat, bersarang 5 atribut yang dapat disaring, masing-masing 5 opsi atribut dan 1000 produk; itu banyak kemungkinan kombinasi.
25 opsi untuk dipilih, memilih satu hingga 5 kali berturut-turut - Saya bukan ahli statistik , tapi saya sadar itu ... (dengan asumsi jumlah opsi atribut tidak berkurang sepenuhnya)
Ok, skenario di atas bukan skenario yang mungkin, seperti yang saya bayangkan, dalam 3 klik - jumlah produk yang tersedia akan berkurang cukup bagi pelanggan untuk menemukan produk mereka. Jadi bahkan jika itu ...
Kemudian dikalikan 5 kategori, yaitu 625 URL. Pada tahap ini, kita berbicara tentang katalog kecil, dan sepenuhnya mengabaikan semua URL produk.
Kami juga tidak mempertimbangkan bahwa jika Anda memiliki kategori bersarang dengan
is_anchor
, itu akan meningkat secara eksponensial.Jadi untuk merayapi volume halaman itu - Anda harus berharap bahwa waktu buka halaman Anda bagus dan rendah untuk memulai, sehingga ini adalah proses yang ringan cepat (sehingga mengalahkan tujuan perayapan) - atau bahwa Anda memiliki cukup waktu untuk menyelesaikan sebelum TTL berakhir.
Jika halaman Anda memiliki waktu buka halaman 0,4 detik dan Anda memiliki CPU 8 inti - maka ...
0,5 menit, tidak buruk - tetapi mari kita bayangkan Anda memiliki waktu memuat halaman 2s
Tetapi jika Anda mengambil skenario semaksimal mungkin
Jadi itulah server produksi Anda, di bawah 100% beban CPU selama 15 menit. Anda akan mengurangi kecepatan perayapan secara proporsional ke TTL yang Anda inginkan.
Jadi jika Anda ingin konten memiliki TTL 3600, perayapan bisa 4 kali lebih lambat - yaitu. hanya 25% CPU yang didedikasikan untuk perayapan. Itu banyak sumber daya hanya untuk menjaga konten kategori prima - kami bahkan belum memperhitungkan produk, istilah pencarian atau tampilan toko tambahan pada tahap ini
Faktanya, hanya dengan melihat ukuran kombinasi yang sebenarnya dalam
catalog_url_rewrites
tabel (yang bahkan tidak memfaktorkan parameter dari navigasi berlapis) akan memberikan gambaran tentang berapa banyak URL yang bisa Anda perlu perayapi.Setiap toko pasti akan berbeda, tetapi yang ingin saya lakukan adalah merayapi situs ke FPC utama tidak praktis. Pastikan toko Anda cepat untuk memulai .
Di mana FPC berguna
Di mana manfaat FPC ikut bermain adalah di toko yang sarat muatan - di mana Anda memiliki tingkat lalu lintas yang benar-benar tinggi dan cache secara alami dan terus-menerus dipupuk oleh kekalahan semata-mata saja.
FPC kemudian ikut bermain dengan mengurangi overhead infrastruktur pada konten yang biasanya diminta - mengurangi panggilan berulang ke backend Magento.
Jadi kami menemukan bahwa FPC bagus untuk digunakan ketika Anda memiliki tingkat lalu lintas yang sangat tinggi - bukan untuk mengurangi waktu buka halaman - tetapi untuk mengurangi penggunaan sumber daya.
Siapa peduli, saya masih mau merangkak
Nah, maka Anda punya dua opsi
Dan ada banyak utilitas untuk melakukan keduanya, ini adalah beberapa yang saya ketahui
Menggunakan Mage-Perftest
Anda dapat menjelajah toko Anda dengan Mage-Perftest dengan cukup mudah, pertama unduh itu
Kemudian tentukan proses perayapan menggunakan peta situs Magento (Anda dapat menyesuaikan ini dengan membuat peta situs URL apa pun, asalkan url dibungkus dengan
<loc></loc>
tag). Perintah berikut akan membaca semua URL dari file sitemap, kemudian merangkak (hanya PHP) URL selama 1440 menit (1 hari). Jika server melebihi 20% CPU atau rata-rata memuat 2 - perayapan akan berhenti sementara.Jika Anda memiliki 1000 URL, dirayapi lebih dari 1 hari, itu akan menjadi sekitar. 1 permintaan setiap 86 detik ~ target 0,011 RPS
sumber
Saya akan menyimpan kata-kata kasar penuh saya untuk posting blog satu hari ini, tetapi sementara itu memiliki puncak di penghangat cache kecil saya
wfpc
.Menguji kinerja
Anda dapat menguji kinerja situs Magento Anda
./wfpc -t http://mymagentosite.com/sitemap.xml
Pemanasan FPC
Dan Anda dapat menghangatkan FPC, yang akan mengenai setiap URL di sitemap.xml.
./wfpc -w http://mymagentosite.com/sitemap.xml
Anda juga dapat menunda antar permintaan jika suka, ini penundaan 1 detik antar permintaan.
./wfpc -w -d=1 http://mymagentosite.com/sitemap.xml
Mode pengujian hanya mengenai 10 URL secara acak, jadi setelah Anda menghangatkan FPC Anda, Anda dapat menjalankan mode uji untuk mengetahui seberapa besar perbedaan yang dibuat oleh FPC!
Pikiran
Secara pribadi, saya pikir penghangat masuk akal ... Di situs kecil dengan sekitar 40 halaman, waktu pengunduhan kira-kira setengah oleh FPC. Di situs besar dengan hampir 40.000 produk menggunakan Lesti_FPC dengan APCu sebagai backend, saya menggunakan sedikit lebih dari 200MB untuk cache, yang terus terang tidak ada apa-apanya di server produksi 8GB.
sumber