2016-11-01 2 views
1

So habe ich diese Webseite, die buchstäblich alle Zeilen in einer Tabelle enthalten. Diese Tabelle atm höchstens höchstens tausend Zeilen. Wie auch immer, es dauerte mindestens sieben bis acht Sekunden, bis die ganze Seite geladen war, und das ist inakzeptabel.Webseite langsam zu laden ajax Abfrage dauerte zu lange trotz Index

Meine aktuelle Lösung ist entweder:

1) Cache in der Tabelle auf Server-Seite spielen Framework-Cache.

2) Cache-Tabelle auf Client-Seite, indem Sie die Tabelle in separate HTML-Seite, verwenden Sie htaccess, und laden Sie es auf iframe.

3) Laden Sie die Tabelle teilweise oder nicht, bis der Benutzer danach fragt. Von dem, was ich sehe, verwenden die meisten unserer Benutzer die Suchleiste, um die Tabelle trotzdem zu filtern. Also, was ist der Sinn des Ladens der ganzen Tabelle? Aber dann kann ich nicht für jeden sprechen.

Ich verwende Play Framework 1 und Hibernate.

Ich habe versucht, die Abfrage neu zu schreiben, indem Sie nur die erforderlichen Felder auswählen, anstatt alle Felder (hibernate.findAll) zurückzugeben, aber das scheint die Ladezeit nicht zu verbessern.

Ich habe den Play-Cache verwendet, Ladezeit wurde halbiert, aber ich lese ein paar Foreneinträge, die gegen Caching sind und sagen, dass sie schwer zu verwalten sind.

Irgendwelche Vorschläge?

+0

Sie sagen, dass "Webseite laden" langsam ist. Aber angenommen, dieses Problem ist in DB. Sind Sie vor diesem Abschluss durch den gesamten Systemfluss gegangen? Ich meine, "Webseiten laden" wird von verschiedenen Variablen wie: a) HTTP-Anfragen zwischen Browser/Web; b) Web-Seite html/css/js Code-Rendering; c) Anforderungen/Verbindungen zwischen Client/Server; d) Netzwerk-Latenz ... usw. Auch wenn Sie 100% sicher sind, dass das Problem in DB ist dann bitte EXPLAIN ANALYSE Ergebnis Ihrer Anfrage. –

+0

Die Seite verbrachte wörtlich wenige ms um Ressourcen zu laden - wie wirklich sehr kurz. Die Seite hat einige andere Details in ihnen, und sie luden auch in einigen wenigen ms. Als ich zur Netzwerkanalyse der Seite ging, dauerte es 8 Sekunden, um den Tisch vollständig zu laden. Ich habe EXPLAIN ANALYSE noch nicht benutzt, aber da es die ganze Tabelle abruft, schätze ich, dass es nur einen vollständigen Tabellenscan durchführt. Aber ich werde morgen nochmal nachsehen. – woof

Antwort

0

Die Ladezeit muss in die zusammengesetzten Teile aufgeteilt werden. Wenn Sie Bedenken hinsichtlich der Abfragegeschwindigkeit und der Indexnutzung haben, sollten Sie die unbearbeitete Abfrage ermitteln, die ausgeführt wird. Dann können Sie einen EXPLAIN analysieren Befehl verwenden, um festzustellen, was tatsächlich passiert.