2009-05-27 3 views
3

Ich habe kürzlich damit begonnen, ein selbstgemachtes CMS zu enthüllen und langsam einzuführen. Die Website ermöglicht eine Vielzahl von Anpassungsmöglichkeiten mit Internationalisierung und Anpassung auf einer Ebene, die keinen Quellcode erfordert. Dies ist ein persönliches Projekt, und die ganze Absicht war zu sehen, wie weit ich meine eigenen Programmiergrenzen überschreiten kann (die Frage der Verteilung eines CMS, das Blog, Webcomic und ein kleines Forum behandelt, ist nicht eines, zu dem ich bereit bin Denken Sie daran, nicht, bis ich es aufräumen und an etwas mehr arbeiten - auch, da es ein Amateurprojekt ist, bezweifle ich, dass es irgendeine Schwerkraft im Vergleich zu anderen, raffinierteren Projekten hat ... aber das sind keine Themen, die das betreffen Thema zur Hand.)Webseitentaktiken: Eine Frage darüber, wie viele SQL-Abfragen ausreichen

Ich habe eine Reihe von Code eingeführt, mit dem ich sehen kann, wie schnell jede Seite generiert wird und wie viele Abfragen ausgeführt werden; im Durchschnitt sehe ich 9-13, bis zu 12 MySQL-Abfragen pro Seite durchgeführt. Die durchschnittliche Zeit zum Generieren einer Seite liegt zwischen 10 und 20 ms. Jetzt, keine Erfahrung mit professionellem Design, welches Optimum sollte ich anstreben?

Welche Möglichkeiten gibt es, um die Generierungszeit zu reduzieren (oder mit einem Durchschnitt von 15 ms/Seite ist dies nicht einmal ein Problem) oder Taktiken zur Verringerung der Anzahl von Abfragen auf einer Seite, auf der der größte Teil des Inhalts geladen ist VON einer MySQL-Datenbank, einschließlich Dinge wie Menüpunkte.

Wohlgemerkt, dies ist eine sehr weite Frage; Es ist nicht meine Absicht, eine allgemeine Frage oder eine Funkenkonversation zu stellen, sondern Wege zu finden, die Last (falls vorhanden) auf einem Server zu reduzieren, den ein solches System erzeugen könnte.

+1

Siehe auch ähnliche Fragen http://stackoverflow.com/questions/807095/what-is-the-optimal-mysql-query-number-in-php-sript http://stackoverflow.com/questions/830489/ how-can-i-count-die-Gesamtzahl-von-mysql-Abfragen-verwendet-pro-Seite http://stackoverflow.com/questions/342504/is-20-sql-queries-per-page-load -really-in Betracht gezogen-a-lot/342544 http://stackoverflow.com/questions/371126/in-php-how-many-db-calls-per-page-is-okay – thomasrutter

+1

und http://stackoverflow.com/questions/561900/how-many-mysql-Abfragen-sollte-ich-Limit-ich-zu-einer-Seite-php-mysql/562106 – thomasrutter

Antwort

0

Wenn Sie diese Websites hauptsächlich für kleine Unternehmen oder aus anderen Gründen entwickeln, wo Sie keinen hohen Traffic vorhersagen oder sich vorstellen (d. H. Nichts wie Digg/Facebook/etc), sollten durchschnittlich 15ms ausreichen.

Darf ich fragen, wofür die 12 Abfragen sind? Ich kann mir vorstellen, dass sie dazu dienen, Menüs zu erhalten, Seiteninhalte zu erhalten und ähnliches. Es gibt verschiedene Methoden zum Kombinieren/Optimieren von Abfragen. Wenn Sie also ein paar Posts hochladen, kann ich Ihnen (und anderen Stackern) dabei helfen, Ihre Abfragen zu optimieren.

+0

Da die Stunde zu spät ist und ich ein Treffen in weniger als acht Stunden habe Schlaf wird zuerst gehabt. Aber ich werde diese Informationen so schnell wie möglich an die Details der Anfragen senden. –

0

Es hängt ... wie immer bei Leistungsfragen, wenn das System derzeit Ihren Leistungsanforderungen entspricht, dann machen Sie sich keine Sorgen.

Wenn Ihre Seitengenerierungszeit 15ms beträgt, wird es nur einen Bruchteil der gesamten Klick- und Glaszeit für den Benutzer sein, siehe yahoo exception performance pages. Es wird noch andere Dinge geben, um eine möglichst schnelle Seitenauslastung zu erreichen Zeit.

Auf dem Server besteht die Möglichkeit, dass die Datenbank die Ergebnisse für fast alle, wenn nicht alle Abfragen, die Sie ausführen, zwischenspeichert, daher das sehr schnelle Seitentiming. Möglicherweise möchten Sie einen größeren Datensatz laden, wenn Sie dies nicht bereits getan haben, da die Leistung möglicherweise mit der Größe des Datensatzes abnimmt.

2
  • ein PHP opcode cache Verwendung wird PHP-Skripten auf der Zeit nach unten genommen zu öffnen und zu kompilieren, drastisch zu senken, indem die Analyse und Zusammenstellung in Bytecode zu überspringen.

  • Einschalten der MySQL query cache ist im Allgemeinen (wenn auch nicht immer) eine gute Idee.

  • Konzentrieren Sie sich nicht auf die Anzahl der Abfragen, sondern konzentrieren Sie sich auf die Verringerung der Zeit, die diese Abfragen benötigen, indem Sie Ihre Abfragen optimieren .Es ist oft viel effizienter, eine größere Anzahl von kleinen, optimierten Abfragen zu haben, als zu versuchen, die Anzahl der Abfragen zu reduzieren.

  • Verwenden Sie einen Profiler wie den in XDebug integrierten. Zusammen mit einem Interpreter wie KCacheGrind oder WinCacheGrind hilft die Optimierung von Code wirklich, wenn Sie wissen, worauf Sie sich konzentrieren sollten. Es lohnt sich nicht, etwas zu optimieren, das nur einen vernachlässigbaren Anteil an Ihrer gesamten Ausführungszeit hat. Es lohnt sich zu erfahren, was alles in * CacheGrind bedeutet.

Mein PHP-Content-Management-System lädt in der Regel eine Seite in etwa die gleiche Menge an Zeit (bis mindestens 8 ms, wo alles ist ein Cache-Treffer). Aber sehr gelegentlich, wenn Sie etwas Komplexes tun, kann es über 500ms dauern. Wenn es um die Benutzererfahrung geht, ist die typische Zeit wichtiger, nicht so sehr die Ausreißer, aber wenn es um Serverlast geht, ist die durchschnittliche Zeit wichtiger, so dass diese 500ms Ausreißer plötzlich ziemlich wichtig sind.

Verwandte Themen