CV laden

Daten

Die Listenquery lädt den Artikel nicht mehr

News, Notes und Cases speichern drei HTML-Bodies in JSON. Das Raster braucht Titel und Anrisse. Den Artikel braucht es nicht.

Jede News-Zeile hält Titel, Anriss und Body als JSON mit en, ru und de. Die öffentliche Liste wählte die Zeile. Fünfzig Artikel zogen etwa 1,2 MB HTML in den InnoDB-Buffer-Pool. Die JSON-API warf das meiste weg, bevor die Antwort PHP verließ. Das Raster druckte nie einen Body.

Die Listenquery fragt jetzt nach id, Kategorie, Titel, Anriss, Bild, Größe, Daten und Sort. Body bleibt auf der Detailquery. Derselbe Schnitt landete auf Notes und Cases. Ein Muster, drei Ressourcen.

Das Raster macht nie json_decode() von drei Artikeln, die es nicht druckt.
Das Raster macht nie json_decode() von drei Artikeln, die es nicht druckt.

Der Index

Öffentliche Listen filtern is_published und sortieren nach sort_order oder published_at. Ein zusammengesetzter Index deckt das in der richtigen Spaltenreihenfolge. Zwei Indizes, die die führenden Spalten duplizierten, sind weg. Sie kosteten Writes und gaben nichts zurück.

Plan-Checks gehören auf Produktionsgröße. Auf einer kleinen Seed-Tabelle wählt MySQL den Scan und sieht gesund aus. Der Kipp zum Full Scan ist eine Zeilenzahl, keine Vermutung in der Entwicklung.

Kleine Seed-Tabellen wählen den Scan und sehen gut aus. Pläne prüft man auf Produktions-Zeilenzahl.
Kleine Seed-Tabellen wählen den Scan und sehen gut aus. Pläne prüft man auf Produktions-Zeilenzahl.

Worauf Vue SSR nicht mehr wartet

Das SSR-Raster wartet nicht mehr auf einen Blob, den es nie druckt. Detailseiten wurden nicht sichtbar langsamer. Falls doch, ist das die eine Query zum Cachen, per id, mit einem TTL, das beim Admin-Save stirbt.

JSON ist das Admin-Format. Der Listenpfad liest eine kurze Zeile. Der Artikelpfad liest den Body. Sie zu mischen war bequem und teuer.

Zurück zu News