Frage

Ich baue eine PHP Seite, aber jetzt die einzigen PHP Ich verwende ein halbes Dutzend oder schließt so auf bestimmten Seiten. (Ich werde wahrscheinlich einige Datenbankabfragen schließlich verwenden.)

Sind einfache include() Aussagen ein Problem für Geschwindigkeit oder Skalierung, wie statische HTML Gegensatz? Welche Arten von Dingen, neigen dazu, eine Website führen hinunter zum Moor?

War es hilfreich?

Lösung

Genau genommen gerade HTML wird immer dienen schneller als ein serverseitige Ansatz, da der Server keine Interpretation des Codes zu tun hat.

Um die größere Frage zu beantworten, da ist eine Reihe von Dingen, die Ihre Website versinken verursachen werden; es gibt einfach keine bestimmte Schwelle für, wenn Ihr Code das Problem vs. PHP verursacht. (Beachten Sie, dass viele von Yahoo-Seiten sind PHP-driven, so glaube nicht, dass PHP nicht skaliert werden kann).

Eine Sache, die ich bemerkt habe ist, dass die PHP-driven Websites, die die langsamsten sind diejenigen, die mehr umfassen als notwendig ist, eine bestimmte Seite anzuzeigen. OSCommerce (oscommerce.com) ist eines der beliebtesten Einkaufswagen PHP-driven. Es hat eine schlechte Angewohnheit, aber all ihre Kernfunktionalität einschließlich (nur für den Fall es gebraucht wird) auf jeder einzelnen Seite. Also selbst wenn Sie brauchen, um eine ‚Info-Box‘ nicht angezeigt wird, wird die Funktion geladen. Auf der anderen Seite gibt es viele PHP-Frameworks gibt (wie CakePHP, Symfony und CodeIgniter), die eine nehmen ‚es laden, wie Sie es brauchen‘ -Ansatz.

Ich würde Ihnen raten, die folgende:

  1. Sie sind nicht mehr Funktionalität, als Sie für eine bestimmte Seite benötigen
  2. Halt Basisfunktionen voneinander trennen (verwenden Sie einen MVC-Ansatz, wenn möglich)
  3. Verwenden Sie require_once statt enthalten, wenn Sie denken, Sie haben verschachtelt werden beinhaltet (z Seite A enthält Datei B, die Datei C enthält). Dadurch wird vermieden, die gleiche Datei mehr als einmal mit. Es wird auch den Prozess stoppen, wenn eine Datei nicht gefunden werden kann; damit Ihren Fehlerbehebungsprozess zu helfen;)
  4. Cache statische Seiten als HTML wenn möglich - zu vermeiden Analysepunkte, die, wenn die Dinge nicht ändern

Andere Tipps

Sicher include () ist langsamer als statische Seiten. Doch mit modernen Systemen sind Sie wahrscheinlich nicht dies als Engpass für eine lange Zeit, um zu sehen - wenn überhaupt. Die Vorteile der Verwendung umfasst gemeinsame Teile Ihrer Website stets aktuell überwiegen die kleinen Performance-Einbußen, meiner Meinung nach (unterschiedliche Navigation auf der einen Seite, weil Sie zu aktualisieren vergessen haben, führt es zu einer schlechten Nutzererfahrung und damit schlechte Gefühle über Ihre Ort / Unternehmen / was auch immer).

Caching wird nicht wirklich helfen, entweder - Caching Code langsamer sein wird als nur ein include (). Der einzige Mal, Caching profitieren Sie, wenn Sie rechenintensive Berechnungen tun (sehr selten, auf Web-Seiten) oder Daten aus einer Datenbank greifen.

Klingt wie Sie in einem wenig verfrühter Optimierung beteiligt sind. Wenn die Anwendung nicht gebaut wird, während die Leistung betrifft gut bewusst zu sein, das primäre Anliegen sein soll, die App geschrieben bekommen.

Beinhaltet ist eine Tatsache des Lebens. Mach dir keine Sorgen über Zahl, Sorgen um Ihren Code gut organisiert (PEAR Ordnerstruktur ist eine schöne Sache, wenn Sie nicht wissen, was ich rede Blick auf die Struktur der Zend Framework-Klassendateien) zu halten.

Fokus auf die Anwendung mit einer angemessenen Höhe der Abstraktion geschrieben bekommen. Gruppe alle Ihre DB-Aufrufe in eine Klasse (oder Klassen), so dass Sie Code-Duplizierung (KISS Prinzipien und alle) minimieren und wenn es darum geht, Zeit, um Ihre Anfragen Refactoring und optimieren sie zentral gelegen sind. Auch auf einigen Unit-Tests zu beginnen Regression zu verhindern.

Sobald die Anwendung installiert ist und läuft, fragen Sie uns nicht, was schneller oder besser ist, da sie auf jede Anwendung abhängt, was Ihr Engpass sein wird. Es könnte sich herausstellen, dass, obwohl Sie viele beinhaltet haben, Ihre Loops Ihre Zeit essen, oder was auch immer. Verwenden Sie XDebug und Profil Code einmal seine und läuft. Achten Sie auf die Codesegmente, die einen unverhältnismäßig viel Zeit auffressen werden dann Refactoring. Wenn Sie zu viel jetzt auf die Performance konzentrieren treffen zwischen umfassen und include_once Sie einen Geist jagen am Ende, wenn diese curl Anfragen synchron laufen essen Ihr Frühstück.

Obwohl in der Zwischenzeit, die besten Vorschläge durch das php.net Handbuch schauen und sicherstellen, wenn es eine integrierte Funktion ist etwas zu tun, was Sie tun wollen, verwenden Sie es! PHP-C-basierte Erweiterungen werden immer schneller als jeder PHP-Code, den Sie schreiben könnte, und Sie werden überrascht sein, wie viel von dem, was Sie versuchen, ist bereits getan zu tun.

Aber auch hier kann ich betone das nicht genug, vorzeitige Optimierung BAD ist !!! Ihre Anwendung Setzen Sie sich mit einem guten Niveau der Abstraktion vom Boden auf, das Profil zu, dann reparieren, was tatsächlich frisst Ihre Zeit nicht reparieren, was Sie könnten essen Ihre Zeit denken.

Nö umfasst sind in Ordnung, nichts über es zu kümmern.

Sie können an einem gewissen Punkt denken möchten, dass Ihre Caching-Header ein wenig über zwicken, aber es sei denn, Sie erhebliche Treffer, wenn es darum sollte es kein Problem sein. Unter der Annahme, dies wird alle statischen Daten, könnten Sie sogar betrachten die gesamte Website zu statischen HTML-Umwandlung (einfachste Weg: Schreiben Sie ein Skript, das auf jeder Seite über den Webserver greift und gibt sie heraus in einer passenden Struktur dir)

Die meisten Web-Anwendungen werden durch die Geschwindigkeit ihrer Datenbank begrenzt (oder was auch immer ihre externen Speicher, aber 9/10 mal das wird eine Datenbank sein), der Anwendungscode selten Anlass zur Sorge ist, und es klingt nicht wie du etwas tust, was Sie über noch Sorgen zu machen.

Bevor Sie dauerhafte Entscheidungen darüber zu treffen, wie Sie den Code für Ihre Website zu strukturieren, würde ich empfehlen, dass Sie etwas zu lesen tun auf der Model-View-Controller- Design-Muster. Zwar gibt es andere dies ist erscheint in Web-Entwicklung Kreisen viel an Boden zu gewinnen und wird sicherlich um für eine Weile sein. Vielleicht haben Sie einen Blick auf einige der anderen Entwurfsmuster vorgeschlagen von Martin Fowler in seinem Patterns of Enterprise Application nehmen wollen Architektur , bevor eine endgültige Entscheidung über welche Art von Design machen wird am besten Ihre Bedürfnisse anzupassen.

Je nach Größe und Umfang Ihres Projekts, möchten Sie vielleicht mit einem vorgefertigten Rahmen für PHP wie Zend Framework oder PHP auf Trax oder Sie gehen entscheiden können Ihre eigene Lösung zu erstellen.

Bezug Insbesondere die Darstellung von HTML-Inhalten würde ich empfehlen, dass Sie irgendeine Form von Templating benutzen, um Ihre Business-Logik zu halten von Ihrer Anzeigelogik trennen. Ich habe festgestellt, dass dies eine einfache Regel in meiner Entwicklung mir Stunden Arbeit gespeichert, wenn der ein oder anderen muß geändert werden. Ich habe http://www.smarty.net/">Smarty verwendet, und ich weiß, dass die meisten der Frameworks gibt entweder ein Template-System ihrer eigenen haben oder ein Plug-in-Architektur, die Sie Ihren eigenen verwenden können bevorzugt Methode. Wie Sie bei möglichen Lösungen zu suchen, würde ich empfehlen, dass Sie für einen suchen, die die Erstellung Cache gespeicherte Versionen der Lage ist.

Schließlich, wenn Sie über die Geschwindigkeit auf der Back-End betroffen sind, dann würde ich empfehlen, dass Sie nach Wegen suchen, Ihre Anrufe Ihre Back-End-Datenspeicher zu minimieren (ob es sich um eine Datenbank oder nur Systemdateien sein). Versuchen Belastung zu vermeiden und zu viel Inhalt zu machen (sagen wir eine große Bericht in einer Tabelle gespeichert, die Hunderte von Datensätzen enthält) auf einmal. Wenn möglich, suchen nach Möglichkeiten, die Benutzeroberfläche Last kleineren Datenbits zu einem Zeitpunkt zu machen. Und wenn Sie speziell besorgt über die tatsächliche Ladezeit Ihrer HTML-Inhalt und seine CSS, Javascript oder andere Abhängigkeiten sind würde ich empfehlen, dass Sie diese Vorschläge von den Jungs bei Yahoo.

So fügen Sie auf, was JayTee erwähnt - Die Funktionen zum Laden, wenn Sie es brauchen. Wenn Sie keine der Frameworks, die dies automatisch tun, möchten Sie vielleicht in die __autoload () Funktionalität suchen, die in PHP5 eingeführt wurde - kann im Grunde Ihre eigene Logik aufgerufen werden, wenn Sie eine bestimmte Klasse instanziiert, wenn es nicht schon ist geladen. Dies gibt Ihnen die Möglichkeit, include () eine Datei, die diese Klasse On-Demand definiert.

Die größte Sache, die Sie Ihre Anwendung tun können, beschleunigen ist eine Opcode-Cache zu verwenden, wie APC . Es gibt eine ausgezeichnete Liste und Beschreibung auf der Wikipedia .

Was einfach angeht enthält, darauf achten, nicht enthalten zu viele Dateien auf jede Anfrage als Disk-I / O kann die Anwendung verursachen nicht gut skalieren. Ein paar Dutzende enthalten sollten in Ordnung sein, aber es ist generell eine gute Idee, um Ihre am häufigsten darin enthaltenen Dateien in ein einziges Skript zu verpacken, so dass Sie nur eine enthalten haben. Die Kosten im Speicher ein paar Klassen hier zu haben und es Sie nicht geladen müssen besser sein wird als die Kosten der Disk-I / O für Hunderte von kleineren Dateien enthält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top