Wir tun es einfach nicht - überhaupt nicht. Je. Wir werden das immer und immer wieder sagen, aber
Caching! = Leistung
Ihre Site muss schnell sein, ohne die Zugabe von FPC (oder Lack für diese Tatsache). Es wird immer eine Zeit geben, in der der Inhalt nicht vorbereitet ist (Ihr Szenario oben).
In einem entladenen Geschäft sollten die Ladezeiten von Seiten mit FPC nicht so beeindruckend sein wie mit Nicht-FPC. Magento ist durchaus in der Lage, < 400ms
Seitenladezeiten auf Standard-Caches (auf Kategorie- / Produkt- / Suchseiten) festzulegen. FPC bringt das auf den < 80ms
Punkt - aber es gibt Vorbehalte.
- Die Bestands- / Preisinformationen sind bis zur Ungültigerklärung oder zum Ablauf der TTL veraltet
Neue Artikel / relevantere Suche ist veraltet, bis sie ungültig wird oder die TTL abläuft
etc.
Warum das Vertrauen in FPC (oder Lack) eine schlechte Idee ist
Wenn Sie kontinuierlich sicherstellen möchten, dass die Caches manuell vorbereitet werden, gibt es wahrscheinlich ein paar Gründe
- Sie haben nicht genug natürliche Schritte, um die Caches auf dem neuesten Stand zu halten (siehe 'Wo FPC nützlich ist').
- Ihre Website ist ohne sie zu langsam
Sie können nicht alles zwischenspeichern
Wenn Sie ein Geschäft mit nur 5 Kategorien, 2 Ebenen tief verschachtelt, 5 filterbaren Attributen, jeweils 5 Attributoptionen und 1000 Produkten annehmen; das sind viele mögliche kombinationen.
25 Optionen zur Auswahl, von denen ich bis zu fünf Mal hintereinander eine auswähle - ich bin kein Statistiker , aber mir ist bewusst, dass ... (vorausgesetzt, die Anzahl der Attributoptionen nimmt nicht vollständig ab)
25 possible URLs on the first selection
20 possible URLs on the second selection
15 possible URLs on the third selection
10 possible URLs on the fourth selection
5 possible URLs on the fifth selection
5^5 = 3,125 possible combinations (for top level categories)
5^4 = 625 possible combinations (for 2nd level categories)
Ok, das obige Szenario ist kein wahrscheinliches Szenario, wie ich mir innerhalb von 3 Klicks vorstellen würde - die Anzahl der verfügbaren Produkte wäre ausreichend gesunken, damit der Kunde sein Produkt finden kann. Also selbst wenn es wäre ...
25 possible URLs on the first selection
10 possible URLs on the second selection
3 possible URLs on the third selection
5^3 = 125 possible URL combinations
Dann mal das mit 5 Kategorien, also 625 URLs. In dieser Phase handelt es sich um einen winzigen Katalog, bei dem alle Produkt-URLs vollständig ignoriert werden.
Wir berücksichtigen auch nicht, dass die Anzahl der verschachtelten Kategorien mit is_anchor
on exponentiell zunehmen wird.
Wenn Sie also dieses Seitenvolumen crawlen möchten, müssen Sie entweder hoffen, dass die Ladezeiten für Ihre Seiten anfangs gut und niedrig sind, so dass es sich um einen schnellen Prozess handelt (der den Zweck des Crawls zunichte macht), oder Sie müssen dies tun genug Zeit, um den Vorgang abzuschließen, bevor die TTL abläuft.
Wenn Ihre Seiten eine Ladezeit von 0,4 s hatten und Sie eine 8-Kern-CPU - dann ...
625 * 0.4 = 250 / 8 = 31 seconds
0,5 Minuten, nicht schlecht - aber stellen wir uns vor, Sie hatten 2s Ladezeiten
625 * 2 = 1250 / 8 = 156 seconds
Aber wenn Sie das maximal mögliche Szenario genommen haben
3,750 * 2 = 7,500 / 8 = 937 seconds ~ 15 minutes
Das ist also Ihr Produktionsserver, unter 100% CPU-Auslastung für 15 Minuten. Sie würden die Crawling-Geschwindigkeit proportional zur gewünschten TTL verringern.
Wenn Sie also möchten, dass der Inhalt eine TTL von 3600s hat, könnte das Crawlen viermal langsamer sein - dh. Nur 25% der CPU sind für das Crawlen vorgesehen. Das ist eine Menge Ressourcen, nur um den Inhalt der Kategorie auf dem neuesten Stand zu halten - wir haben in dieser Phase noch nicht einmal Produkte, Suchbegriffe oder zusätzliche Store Views berücksichtigt
Wenn Sie sich die bloße Größe der Kombinationen in der catalog_url_rewrites
Tabelle ansehen (wobei die Parameter der geschichteten Navigation nicht einmal berücksichtigt werden), erhalten Sie eine Vorstellung davon, wie viele URLs möglicherweise nicht mehr gecrawlt werden müssen.
Jeder Laden wird sicherlich anders sein, aber ich versuche, nach Hause zu kommen, weil es nicht praktisch ist, die Site auf Prime FPC zu durchsuchen. Stellen Sie einfach sicher, dass Ihr Geschäft von Anfang an schnell ist .
Wo FPC nützlich ist
Wo die Vorteile von FPC zum Tragen kommen, liegt in einem stark ausgelasteten Geschäft - wo Sie wirklich viel Verkehr haben und die Caches natürlich und ständig allein durch Fußstapfen vorbereitet sind.
FPC kommt dann ins Spiel, indem der Infrastruktur-Overhead für häufig angeforderte Inhalte reduziert wird - und so die wiederholten Aufrufe des Magento-Backends reduziert werden.
Wir haben festgestellt, dass sich FPC hervorragend für die Bereitstellung eignet, wenn Sie über ein hohes Verkehrsaufkommen verfügen - nicht um die Ladezeit der Seite zu verringern, sondern um den Ressourcenverbrauch zu verringern.
Wen kümmert es, ich will immer noch kriechen
Dann haben Sie zwei Möglichkeiten
- Crawl von einer Vorlage (zB Sitemap)
- Extrahieren Sie die Links Seite für Seite und durchsuchen Sie sie
Und es gibt viele Hilfsprogramme, die ich kenne
- Magier-Test
- HTTrack
- Nutch
- Sphider
- Crawler4j
Mage-Perftest verwenden
Sie können Ihren Shop mit Mage-Perftest ganz einfach durchsuchen, indem Sie ihn zuerst herunterladen
wget http://sys.sonassi.com/mage-perftest (64bit) OR
wget http://sys.sonassi.com/mage-perftest-i386 (32bit)
chmod +x http://sys.sonassi.com/mage-perftest*
Definieren Sie dann den Crawl-Prozess mithilfe der Magento-Sitemap (Sie können dies anpassen, indem Sie eine Sitemap aller URLs erstellen, sofern die URLs in <loc></loc>
Tags eingeschlossen sind). Mit dem folgenden Befehl werden alle URLs aus der Sitemap-Datei gelesen und anschließend die URLs innerhalb von 1440 Minuten (1 Tag) gecrawlt (nur PHP). Wenn der Server mehr als 20% der CPU-Auslastung aufweist oder die durchschnittliche Auslastung 2 beträgt, wird das Crawlen vorübergehend unterbrochen.
./mage-perftest -u www.example.com -s www.example.com/sitemap.xml -r auto -b -d 1440 -z -a 20 -l 2
Wenn Sie 1000 URLs haben, die über einen Tag gecrawlt wurden, sind dies ca. 1 Anforderung alle 86 Sekunden ~ Ziel von 0,011 RPS