Ich habe eine große Anzahl von Berichten festgestellt, dass diese Tabelle selbst sehr überladen sein kann. Ich betreibe eine Website mit ~ 5000 SKUs und ~ 250 Kategorien (Einzelspeicher) und einer resultierenden core_url_rewrite
Tabelle mit über 600.000 Zeilen und einer Größe von über 500 MB ist verrückt.
Dies kann die Leistung der Site verlangsamen und zu einer sehr umfangreichen Datenbank führen. Ich habe ein bisschen gegraben und einige Posts zu diesem Thema gefunden, vor allem:
Core_url_rewrite-Fehler: Riesige Menge doppelter URLs für jedes im Index generierte ProduktMagento Commerce - Bug Tracking - Ausgabe Nr. 29020
// Diese Links wurden seit der Implementierung der neuen Boards entfernt
Jetzt verstehe ich , dass die Tabelle abgeschnitten werden kann und indexiert, aber dies nicht löst das Problem, es verlängert nur das Problem nicht noch einmal passiert.
Soweit ich weiß, handelt es sich bei einem Teil des Problems um Produkte, die den gleichen URL-Schlüssel haben, der auf dem Produktnamen basiert, was zu indizierten Links führt.
Ein Fix erwähnt ist:
app/code/core/Mage/Catalog/Model/Url.php
Online ~ 807:
Veränderung:
if ($product->getUrlKey() == '' && !empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
Zu:
if (!empty($requestPath)
&& strpos($existingRequestPath, $requestPath) === 0
)
Aber auch dies löst das Problem nicht vollständig.
Meine Frage lautet wie folgt:
Wenn Sie dieses Problem festgestellt haben, haben Sie es geschafft, einen effektiven, logischen und effizienten Algorithmus einzurichten, bei dem das Problem nicht wiederholt "verwaltet" wird, sondern die Angelegenheit tatsächlich ein für alle Mal gelöst wird?
Würde mich wirklich über einen Einblick darüber freuen.
Übrigens: Bitte tun Sie sich selbst einen Gefallen und prüfen Sie, wie Ihr Tisch im Moment aussieht. Möglicherweise tritt dieses Problem und die daraus resultierende Beeinträchtigung der Leistung auf, ohne es überhaupt zu wissen - ich habe es nicht getan.
Bearbeiten: Ich habe Kontakt zu www.Nexcess.net (einem Magento-Platin-Hosting-Partner) aufgenommen und sie haben bestätigt, dass sie von Kunden angefordert wurden, dass ihre core_url_rewrite
Tabelle abgeschnitten werden muss, da sie zu umfangreich ist.
Eine große Sorge von mir ist die SEO-Auswirkung, die dies haben könnte, weshalb ich eine Lösung möchte, anstatt das Problem von neuem aufzuschieben.
Update: Nexcess erwähnte, dass es bei den doppelten Produkten in der Tabelle tatsächlich zu SEO-Schäden kommen kann.
quelle
Antworten:
Ich habe es geschafft, das Problem wie folgt zu stabilisieren:
Schritt 1: Umschreiben des Katalog-URL-Modells (Verwenden Ihres eigenen Moduls: Vorgehensweise )
Nach Jahnni's Lösung weiter
die MagentoCommerce-Boards(nicht mehr aktiv mit neuem Board),app/code/core/Mage/Catalog/Model/Url.php
[um Zeile 807Mage_Catalog_Model_Url::getProductRequestPath()
]Von:
Zu:
Schritt 2: Abschneiden
Schneiden Sie die
core_url_rewrite
Tabelle abSchritt 3: Caches neu indizieren und leeren
Initiieren Sie den Neuindizierungsprozess für Core URL Rewrites. Danach möchten Sie den Magento-Cache und den Speicher-Cache leeren.
System
→Cache Management
→Flush Magento Cache
System
→Cache Management
→Flush Cache Storage
Voila, du bist fertig. Wenn Sie den Indexer erneut ausführen, wird Ihnen auffallen, dass die Größe der Tabelle konstant bleibt (es sei denn, Sie haben dazwischen weitere Produkte hinzugefügt oder Sie haben doppelte Kategorienamen).
quelle
core_url_rewrite
jetzt die Tabelle an und notieren Sie die Anzahl der Datensätze. Führen Sie Schritt 3 erneut aus (Neuindizierung), und aktualisieren Sie die Ansicht dercore_url_rewrite
Tabelle. Wenn die Anzahl gleich ist, haben Sie erfolgreich aufgelöst. Führen Sie dann Ihre benutzerdefinierten Änderungen manuell zusammen. Alles Gute.Obwohl ich hoffe, dass jemand hier eine Antwort findet, weiß ich nicht, dass Sie eine finden werden. Dieser Tisch wird aus vielen verschiedenen Gründen sperrig. Ein Fehler in früheren (und möglicherweise aktuellen) Versionen von Magento ist einer. Zum anderen enthält diese Tabelle eine Logik, mit der versucht wird, Änderungen am URL-Schlüsselwert zu verfolgen, sodass 301/302-Überschreibungen für alte Produkte eingerichtet werden. Aus diesem Grund und aufgrund von Komplikationen kann das Abschneiden der Tabelle und das erneute Erstellen von URLs dazu führen, dass vorhandene URLs nicht mehr geschrieben werden. Dies hat eine unbekannte Auswirkung auf die Auflistung in Ihrer Suchmaschine (nicht unbedingt schlecht, nur schwer vorherzusagen).
Mein allgemeiner Rat an Kunden, die fragen, ist
Verlassen Sie den riesigen wachsenden Tisch so, als ob Sie Ihre URL / SEO-Situation nicht gut im Griff hätten
Bis die Tabellengröße ein Problem darstellt (z. B. das Generieren von Site-Maps). In diesem Fall sollten Sie Ihre URL / SEO-Situation im Griff haben.
Sobald Sie Ihre URL / SEO-Situation im Griff haben, sichern Sie die Tabelle, kürzen Sie sie und erstellen Sie sie neu. Beheben Sie alle URL- / SEO-Probleme, die durch das Abschneiden verursacht wurden.
Schritt 3 automatisieren
Der Versuch, dies auf der Magento-Code-Ebene zu beheben, ist bewundernswert, aber Sie werden flussaufwärts schwimmen. Manchmal ist es besser zu akzeptieren, dass "Das ist nur Magento, das ist Magento", und das Problem mit einem externen Prozess zu lösen.
quelle
Ich möchte einen Fix für diesen Fehler im Url Rewrite Indexer hinzufügen , der beim Bugathon im März 2013 entwickelt und anschließend weiter verbessert wurde. Es sollte dieses Problem lösen. Als Referenz ist hier die Patch-Datei aus dem Link:
Zusätzlich möchte ich den EE-Patch hinzufügen
PATCH_SUPEE-389_EE_1.12.0.2_v2.sh
, der jetzt auf GitHub verfügbar ist :Wenn Sie diesen Patch mit CE verwenden möchten, stellen Sie sicher, dass Sie ihn ordnungsgemäß testen, da er für EE entwickelt wurde.
quelle
Nachdem Sie den von Simon bereitgestellten Patch angewendet haben, können Sie mit der folgenden Abfrage Junk-Daten entfernen:
Im Gegensatz zu Ashish Hiras Abfrage betrifft dies nur URLs, die wie im letzten Teil eine Ganzzahl haben - in meinem Fall war dies der Grund für das Durcheinander.
Es wird versucht, gültige Umschreibungen nicht zu berühren, die beispielsweise beim Aktualisieren eines URL-Schlüssels erstellt wurden.
quelle
Ich habe die akzeptierte Antwort mit Erfolg umgesetzt. Bei einer anderen Magento-Installation musste ich einige benutzerdefinierte Neuschreibungen beibehalten, damit ich alle Einträge löschte, die mit einem - endeten, und dann eine bis zu fünfstellige Zahl mit:
Das hat meistens funktioniert, aber ich bekomme immer noch 2 weitere Zeilen für jeden Neuindex. Nicht sicher warum. Ich dachte, ich würde diese Erfahrung teilen.
quelle
$collection = Mage::getModel('catalog/product')->getCollection()->addAttributeToFilter('url_key', array('regexp' => '[0-9]$'));
Die Kernänderung, die Sie erwähnt haben, scheint nur erforderlich zu sein, wenn Sie Produkte ohne url_keys haben. Magento sollte jedoch immer url_keys für Sie erstellen. Wenn Sie einen Importeur haben, der Produkte ohne url_keys erstellt, tritt dieses Problem bei diesen Produkten auf. Versuchen Sie, die folgende Abfrage auszuführen, um solche Produkte zu finden:
Wenn Produkte von dieser Abfrage zurückkehren, haben sie keinen url_key und werden ein Problem darstellen.
quelle
entity_type_id
für Produkte 4 und nicht 10 ist.Ich habe die genehmigte Lösung befolgt, um doppelte URL-Überschreibungen zu vermeiden, und dann
core_url_rewrite
als CSV-Datei exportiert . Konnte diese CSV öffnen und alle bis auf manuell erstellten URL-Änderungen löschen.Dann habe ich die
core_url_rewrite
Tabelle abgeschnitten und meine gespeicherte CSV mit manuell erstellten URL-Änderungen importiert.Nach allen Änderungen wurde von 940.000 Zeilen auf 32.000 Zeilen gewechselt. Riesige Verbesserung.
quelle
Hier Patch (lokale Rewrite) für Magento Community für Updates , das https://github.com/biotech/Magento-URL-Rewrite In der Tat macht die gleichen wie EE Patch PATCH_SUPEE-389_EE_1.12.0.2_v2.sh - jede Rewrite überprüfen und Vermeiden Sie die Erstellung doppelter Datensätze. Funktioniert gut in den letzten 2 Monaten bei der Produktion von CE 1.9, 15.000 Produkten, 4 Filialen, jede Nacht nach Änderungen des Massenproduktimports wird ein vollständiger Neuindex erstellt.
quelle
Da dies in diesem Thread noch nicht erwähnt wurde, wollte ich die coolen Neuigkeiten mitteilen, dass dieses Problem in Magento 1.9.3.9 und höher behoben wurde. Siehe die zugehörigen Versionshinweise :
Alle hier genannten Fixes für dieses Problem sind daher nicht erforderlich, wenn Sie eine Magento-Version größer oder gleich 1.9.3.9 verwenden. Ich schlage immer noch vor, die alten Werte zu löschen, wie in Alex Antwort beschrieben .
quelle
Führen Sie diese Abfrage aus
Dies wird Ihnen sicherlich dabei helfen, die Größe der
core_url_size
Tabelle zu reduzieren, indem Sie Junk-Daten löschen.quelle
Beseitigen, abschütteln
.html
.html
Stellen Sie .htaccess ein
Alle
.html
Weiterleitungen löschen :quelle
Die offizielle Antwort sollte sein, SUPEE-389 zu installieren. So einfach ist das.
Es funktioniert perfekt mit Magento CE, da sie in diesem Bereich denselben Code verwenden.
Die Patch-Datei finden Sie hier: https://gist.github.com/piotrekkaminski/c348538ca91ba35773be#file-patch_supee-389_ee_1-12-0-2_v2-sh
Wir hatten dieses Problem und es wurden Tausende neuer Zeilen nach jeder Neuindizierung der Katalog-URL generiert. Jetzt ist das Problem weg ... bis auf die Tatsache, dass wir die DB bereinigen müssen.
Das hier bereitgestellte Skript scheint ein guter Anfang zu sein, ist jedoch keine perfekte Lösung.
Siehe https://www.atwix.com/magento/duplicated-product-url-keys-in-community-edition/
quelle
Es gibt auch ein spezielles Modul https://github.com/vladsmirnov/url-rewrites , sodass Sie den Patch nicht nach jedem Magento-Update erneut anwenden müssen. Das Modul besteht aus zwei Teilen: dem eigentlichen Modul, um Duplizierungen von nun an zu verhindern, und dem Shell-Skript, um die vorhandene Datenbank zu bereinigen.
quelle