Eine Sache, die alle Programmierer gerne tun, ist, ein Programm zu schreiben, das Programme generiert. Im Web stehen uns zwei unterschiedliche Entwicklungsumgebungen gegenüber: Client (Browser) und Server. Gemäß der Definition des HTTP-Protokolls können Sie auf der Serverseite ein Programm schreiben, das ein Programm in einer anderen Sprache ausgibt, das auf der Clientseite ausgeführt werden kann. Wählen wir (natürlich) PHP zum Schreiben des Serverprogramms und JavaScript zum Schreiben des Clientprogramms. In diesem Artikel zeige ich Ihnen, wie Sie diese Kombination verwenden, um Daten auf dem Client zu speichern und den Datenaustausch zwischen dem Server und dem Browser zu minimieren, sodass sie in einigen interaktiven Anwendungen wie Chatrooms, Nachrichtensystemen usw. verwendet werden kann Was willst du.
Elemente:
PHP4
JavaScript
Frames
Ideen:
Wir werden vorübergehend versuchen, ein in PHP geschriebenes HTTP-Chatroom-Programm zu entwickeln. HTTP ist kein gutes Protokoll zum Chatten, aber es ist immun gegen Firewalls und Proxyserver, und wir können PHP in vollem Umfang nutzen, ohne dass Java-Applets erforderlich sind. Es gibt zwei Hauptprobleme mit dem Chatroom-Programm: Das erste ist, dass der IE die „Push“-Methode nicht unterstützt und daher in eine vollständige „Pull“-Anwendung umgewandelt werden muss (was sich auf die automatische Aktualisierung des Clients bezieht). für ein Chatprogramm. Wir beabsichtigen, die Aktualisierungszeit des Clients anpassbar zu machen, und der Server generiert die Aktualisierungszeit basierend auf dem Ergebnis einer Funktion auf dem Server zum Empfangen von Nachrichtendaten innerhalb der vorherigen x Minuten. Das zweite Problem ist schwieriger zu lösen: Aufgrund der automatischen Aktualisierungsmethode muss der Server jedes Mal alle Informationen an den Client senden, und wir gehen davon aus, dass dadurch ein großer Übertragungsaufwand verursacht wird. Und ein Beispielprogramm, das wir zur Simulation eines einfachen Chatroom-Modells erstellt haben, zeigte auch, dass dies der Hauptgrund für Chat-Verzögerungen ist. Dieser Artikel befasst sich mit der zweiten und weiteren Frage.
Normales Modell:
Durch die Verwendung von Frames können Sie einen bestimmten Frame aktualisieren, ohne andere Frames neu zu laden. Dies ist nützlich, um die C/S-Übertragung zu minimieren. Unser Modell basiert auf dem folgenden Design:
Hauptdatei, die zur Definition der Rahmenstruktur verwendet wird.
Framedatei laden.
Framedatei anzeigen.
In unserem Design wird der Laderahmen automatisch alle „x“ Sekunden aktualisiert. Die Idee besteht darin, die Daten in der Hauptdatei zu speichern und der Laderahmendatei zu ermöglichen, Daten vom Server anzufordern, die der Client noch nicht erhalten hat. Wir verwenden Zeitstempel, um Nachrichten, Nachrichten oder Dinge zu markieren, die übertragen werden können, und können dadurch erkennen, welche an den Kunden weitergeleitet werden müssen und welche nicht. Wir nutzen die Session-Funktion von PHP4, um den „letzten Zeitstempel“ auf dem Client zu speichern, sodass er auch auf dem Server sichtbar ist. Wenn die Laderahmendatei Daten empfängt, werden die Daten in der Hauptdatei gespeichert (beachten Sie, dass die Hauptdatei zwar groß sein kann, aber nur einmal übertragen wird) und dann die Anzeigerahmendatei aktualisiert wird. Zur weiteren Optimierung halten wir die Anzeigerahmendatei so kurz wie möglich. In diesem Rahmen rufen wir einfach eine „Anzeige“-JavaScript-Funktion auf. Diese Funktion wird natürlich in der Hauptdatei gespeichert. Anzeigerahmen dynamisch zeichnen. Werfen wir einen Blick auf diese Methode:
Der Browser fordert die Hauptdatei (Frame-Struktur) an
Die Hauptdatei wird vom Server übertragen, der die Frame-Struktur definiert, und dann werden andere Frames (Ladeframes und Anzeigeframes) übertragen .
Die geladene Frame-Datei wird auf dem Server analysiert. Wenn der Client keine Sitzungsvariable „Zeitstempel“ hat, ruft er alle Daten vom Server ab
und generiert JavaScript-Code, um die Daten in der Hauptdatei zu speichern . Legen Sie dann die Sitzungsvariable „timestamp“ fest.
Laden Sie dann die Frame-Datei und generieren Sie JavaScript-Code, damit der Client die Anzeige-Frame-Datei aktualisieren kann.
Diese Aktualisierung bewirkt, dass die Anzeigerahmendatei die Funktion „Anzeige“ aufruft, die Anzeigerahmen basierend auf den Daten generiert.
Alle „x“ Sekunden kehren wir zu (2) zurück
Unsere Analyse dieser Methode ist wie folgt:
Wir wollen drei Dateien:
Hauptdatei (groß, enthält Display Code und gespeicherte Variablen und Anfangswerte)
Frame-Datei laden (klein, enthält PHP-Code, wird zum Abrufen von Daten vom Server und zum Generieren von JavaScript-Code verwendet)
Frame-Datei anzeigen (sehr klein, nur ein Paar der Hauptanzeigefunktion Aufrufe in der Datei)
Die Hauptdatei wird nur einmal übertragen.
Laderahmendateien und Anzeigerahmendateien werden alle „x“ Sekunden übertragen.
Die Laderahmendatei kann beim ersten Aufruf größer sein und dann sehr kurz werden, da jedes Mal nur Daten abgerufen werden, die nicht vom Client abgerufen wurden.
Das Gleiche gilt für Anzeigerahmendateien.
Da die Anzeigeergebnisse clientseitig verarbeitet werden, reduzieren wir die Belastung der Serverdaten.
Sind Sie verwirrt? Schauen wir uns ein Beispiel an:
In diesem Beispiel haben wir einen Chatroom erstellt. Er kann nur verwendet werden, um zu demonstrieren, wie man unser Modell implementiert nicht chatten?“ „Diese oder jene Funktion zum Raum hinzufügen“ und so weiter. Wenn Sie dieses Modell nützlich finden, können Sie damit einen Chatroom erstellen, der komplex genug ist, um Ihre Anforderungen zu erfüllen. Bedenken Sie jedoch, dass es nicht nur für Chatrooms verwendet werden kann.