Empfohlene Struktur für high-traffic-website
Ich bin " umschreiben eine große website, die sehr solide Architektur, hier meine paar Fragen, und verzeihen Sie mir für das mischen von äpfeln und Orangen und wahrscheinlich kiwi zu:) ich habe eine Menge Forschung und endete völlig verwirrt.
Wichtigste Frage: Welche Vorgehensweise würden Sie im Gebäude einer großen website wachsen dürften-in jeder Hinsicht?
-
Einzigen Punkt, Seiten, Daten in die Datenbank, zog durch Einbeziehung der GET-variable mit Datenbank-Eintrag (?pageid=was auch immer)
-
Einzigen Punkt, die Seiten, die Daten in separaten Dateien, basierend auf GET-variable (?pageid=was auch immer gehören würde whatever.php)
-
MVC (Okay Jungs, ich bin alle für es, aber nicht begreifen kann das Konzept neben der überprüfung alle tutorials und frameworks gibt, Sie zu speichern "Ansicht" in der Datenbank? Scheint mir von Beispielen, dass, wenn Sie haben 1000 Seiten von der gleichen Art, Sie kann geprägt sein von 1 Modell, aber ich werde trotzdem 1000 "views" - Dateien?)
-
PAC - man- das klingt auch logischer für mich, aber hat nicht viel Ressourcen, ist dies ein guter Weg zu gehen, können Sie empfehlen, irgendwelche Bücher oder links?
-
DAL/DAO/DDD - ich lernte über diese Begriffe durch sorgfältig Lesen durch stack-overflow vor der Veröffentlichung Frage. Nicht sicher, ob es gehört zu dieser Liste
-
Hinsetzen und meine eigene Architektur (wohl tun, wenn niemand klärt mich hier:)
-
Etwas nicht erwähnt...
Dank.
- Ich bin ein großer fan von MVC design pattern, hier ist ein tutorial, dass ich denke, dass wird sich klären einige der Fragen, die Sie haben. php-html.net/tutorials/model-view-controller-in-php
- Wenn Sie planen, um Ihre eigene Architektur, rufen Sie mich =D Nach dem säuerlich enttäuscht mit Drupal habe ich schon überlegt, etwas mit mehr Leistung. Wenn jemand da draußen ist ein Drupal-fan, fühlen Sie sich frei, mich zu Kontaktieren als auch. Ich werde gerne mit Ihnen teilen meine schlechten Erfahrungen. Wenn Sie lieber herauszufinden, mein problem aus Erster hand, versuchen, erstellen Sie einen Inhaltstyp für eine Tabelle mit variabler Spalten.
- All diese Dinge, die Sie hier erwähnt, hat nichts zu tun mit dem Umgang mit hohen traffic. Sie können wählen, was Sie möchten, und obwohl einige der Punkte sind einfach nur lahm. Beachten Sie auch, dass 99% der Menschen, die sagt nur ein Wort, "MVC" hier, haben nicht die leiseste Ahnung, was es ist.
- Nur weil MVC ist nicht native zu PHP und Implementierungen variieren, bedeutet nicht, es ist keine gute Idee. Die Abstraktion der Ansicht, vor allem, ist eine Monumental gute Idee. Eine enge zweite ist die Nützlichkeit abstrahiert den Zugang zu und die Logik Betriebssystem auf Ihre Daten.
- MVC ist eine Art code. Es hat nicht zu tun mit der Sprache selbst, vielmehr ist es ein Weg, der Sie direkt Ihren code, um ausgeführt werden. Sie können sich direkt mit MVC-Muster und in jeder Sprache.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Skalierbarkeit/Verfügbarkeit (iow. high-traffic) für websites ist am besten, indem Sie keines der Elemente, die Sie erwähnen. Vor allem Punkte 1 und 2; speichern der Seite Definitionen in einer Datenbank ist ein absolutes no-no. MVC und andere ähnliche Muster sind mehr für die code-Klarheit und Wartung, nicht für Skalierbarkeit.
Einen wichtigen Teil der fehlenden Informationen, welche Art der gleichzeitigen Zugriffe/sec erwarten Sie? Manchmal, Menschen, die nicht gebaute high-traffic-Webseiten sind überrascht, die trefferraten, die wirklich um eine "Skalierbarkeit Alptraum".
Gibt es Bücher, wie man design von skalierbaren Architekturen, so ein, SO wird die post nicht in der Lage sein, um das Thema Gerechtigkeit, aber einige sehr top-level-Konzepte, in keiner bestimmten Reihenfolge, sind:
In diesem Punkt haben Sie optimiert das Verhalten auf einem server, und Sie haben zu "skalieren". Nun, die Dinge sehr kompliziert, sehr schnell. Load-balancing-Szenarien verschiedener Typen (Splitter, DNS-getrieben, dumm, balancing, etc), Trennung von Daten Lesen von schreiben von Daten auf verschiedene DBs, geht auf eine Virtualisierungs-Lösung wie Google Apps auslagern statischer Inhalte auf einem großen CDN-service, die Verwendung einer Sprache wie Erlang oder Scala und parallelisieren app, etc...
Potenzial Alptraum für die Wartung. Und auch für die Entwicklung, wenn Sie mit einem team von mehr als 2-3 Leute. Sie würden erstellen müssen eine Reihe strenger Regeln für alle einzuhalten - Aufwand wäre sehr viel besser, wenn mit MVC. Dasselbe gilt für die 2.
Es hängt davon ab, wie viele Seitenlayouts gibt es. Die meisten MVC-frameworks ermöglichen Ihnen das arbeiten mit strukturierten Ansichten (z.B. main page-views, sub-views). Denken Sie an eine Ansicht als HTML-template für die Webseite. Wie viele Vorlagen und sub-templates innerhalb Sie brauchen, ist genau, wie viele anzeigen Sie haben werde. Ich glaube, die meisten websites können sich mit bis zu 50 Haupt-Ansichten und bis zu 100 Untersichten - diese sind aber sehr große Websites. Blick auf einige Seiten, die ich laufen, es ist mehr wie 50 Aufrufe insgesamt.
Tut es. DDD ist großartig, wenn Sie brauchen, meta-Ansichten oder meta-Modelle. Sagen, wenn alle Ihre Modelle sind sehr ähnlich in Struktur, unterscheiden sich aber nur in der Datenbank verwendeten Tabellen und Ihre sichten Karte fast 1:1 Modellen. In diesem Fall ist es eine gute Zeit für DDD. Ein gutes Beispiel ist einige ERP-software, wo Sie nicht brauchen, ein separates design für alle Tabellen der Datenbank, die Sie verwenden können, einige einheitliche Art und Weise zu tun, alle CRUD-Operationen. In diesem Fall könnten Sie wahrscheinlich Weg mit einem Modell und ein paar Ansichten - alle generiert, die zur Laufzeit dynamisch mit Hilfe von meta-Modell-maps-Datenbank-Spalten, Arten und Regeln der Logik der Programmiersprache. Aber, bitte beachten Sie, dass es dauert einige Zeit und Mühe zu bauen, die eine Qualität DDD-Motors, so dass Ihre Anwendung nicht Aussehen wie gehackt-bis MS-Access-Programm.
Wenn Sie eine öffentliche website, sind Sie wahrscheinlich gehen, um es gut zu machen mit MVC. Ein sehr guter Ausgangspunkt ist, zu schauen CodeIgniter video-tutorials. Es hat mir geholfen, zu verstehen, was MVC wirklich ist und wie es zu benutzen ist viel besser als jede HOWTO oder Handbuch habe ich gelesen. Und Sie nehmen nur 29minutes insgesamt:
http://codeigniter.com/tutorials/
Genießen.
Ich bin ein fan von MVC, da finde ich es einfacher zu skalieren Ihr team, wenn alles einen Platz und ist schön aufgeteilt. Es dauert einige gewöhnungsbedürftig, aber die einfachste Art und Weise in den Griff zu bekommen, es ist zu Tauchen Sie ein in.
Sagte, dass definitiv überprüfen Sie Ihre lokale Bibliothek, um zu sehen, wenn Sie die O'Reilley Buch auf Skalierung: http://oreilly.com/catalog/9780596102357, das ist ein guter Ort, um zu starten.
Wenn Sie eine "große" website und verstehen nicht, MVC oder web-framework ein CMS vielleicht eine bessere route, da können Sie es erweitern mit Plug-ins, wie Sie sehen, passen. Mit dieser route können Sie sich keine sorgen mehr um den Inhalt und Seiten-Struktur und nicht die Plattform. Solange Sie bei der Auswahl der passenden CMS.
Ich würde vorschlagen, erstellen Sie ein mock-app mit web-mvc-frameworks in der wildnis und ein pick, mit dem Sie Ihre Entwicklung war glatt genug. Die Einrichtung der code auf eine solide basis grundlegender Bedeutung ist, wenn Sie begreifen wollen Konzepte von mvc und bereit sein, neue Funktionen hinzufügen, um Ihre web einfach.