2017-12-29 3 views
0

Ich entwickelte eine Extbase-Erweiterung mit Listen- und Detailansicht (Liste und Show-Aktion). Für die Links schön zu sehen Ich bin mit realurl ...TYPO3 - Performance-Drop Zugriff auf einen Datensatz mit einer großen Anzahl von Datensätzen (> 1 Million)

<f:link.action action="show" pageUid="43" arguments="{record:record.uid}">{record.name}</f:link.action> 

domain/?tx_abc_abc[record]=1&tx_abc_abc[action]=show&tx_abc_abc[controller]=Abc&cHash=10c78febea3ae5dsdf535fb36ca6d08 

domain/category/record_id/ 

Aber mit der Anzahl der Datensätze jetzt erreicht über 1 Million Datensätze Ich bin ein bisschen ein Leistungsabfall Zugriff auf die Detailseite zu erfahren. Ich habe auch 2 Sprachen.

Was kann ich tun, um den Leistungsabfall zu stoppen oder die Leistung zu erhöhen?

In einigen Setups ich sehe, dass eine Aufzeichnung zugreifen wie dies umgesetzt wird:

domain/category/?record_id=DE00ABC03709 

Ist dies durch eine JSON Ansicht/(RESTful) API wie das getan? https://usetypo3.com/json-view.html

+1

Es gibt viele Faktoren, Sie können Ihre Modell 'record' Eigenschaften überprüfen, wie viele davon haben' \ TYPO3 \ CMS \ Extbase \ Persistence \ ObjectStorage'? Überprüfen Sie auch das Zwischenspeichern der Detailseite und Ihre Serverkonfigurationen. – ravisachaniya

+0

Verwenden Sie die Methode 'findAll()' Ihres Domänenrepositorys, um * alle * Entitäten in der Listenansicht zu rendern? In diesem Fall sollten Sie eine Seitennummerierung verwenden, um die Menge an Daten zu reduzieren, die aus der Datenbank abgerufen und als HTML gerendert werden. Eine bessere Alternative wäre in der Tat, den HTML-Overhead zu reduzieren, der verwendet wird, um jede Entität zu umhüllen und nur Daten über AJAX als JSON abzurufen - das Rendern könnte mit Datenbindung erfolgen, wie z. Eckig oder z.B. RivetJS ist eine leichte Implementierung nur für diesen Zweck. –

Antwort

0

Fällt Ihr Leistungsabfall immer? oder ist es Cache abhängig? Ist Ihr Cache groß genug, um alle Detailseiten zwischenzuspeichern?

einen Cache-Test durchführen:

  1. klar Cache,
  2. Anfrage alle Detailseiten mit zunehmender ID (wie diese Anforderungen sind uncached alle Seiten den Cache mit dem Füllen mit der gleichen Geschwindigkeit, volle Rendering sein sollte)
  3. dann Detailseiten mit abnehmender ID anfordern (jetzt sollten alle Seiten eine schnellere Antwort anzeigen, da nur die zwischengespeicherte Seite zurückgegeben werden sollte). Wenn Ihr Cache irgend id alle folgenden Antrag ist klein zeigen die langsamere Reaktion von 2.

Allgemein gilt:
Für große Daten es ist (mehr) wichtig, einen Index-Taste auf dem Feld haben Sie Wählen Sie die Datensätze aus.
Ich frage mich über Ihre Hex-ID in Ihrem Beispiel, wie TYPO3 in der Regel nur Dezimal-Ganzzahlen verwendet (Feld uid, die normalerweise ein Index-Schlüssel ist).

In jedem Fall können Sie andere Felder als Auswahl verwenden, insbesondere als Teil der URL (z. B. das Titelfeld für Nachrichten). Dann kann ein zusätzlicher Indexschlüssel für Big Data hilfreich sein.

Verwandte Themen