


Detaillierte Erläuterung der Techniken zum Zwischenspeichern und Komprimieren dynamischer Seiten in PHP
mod_gzip ist ein Apache-Modul, dessen Funktion darin besteht, Gzip zum Komprimieren statischer HTML-Seiten zu verwenden. Browser, die dem IETF-Standard folgen, können die Gzip-Kodierung akzeptieren (IE, Netscape usw.). mod_gzip kann die Downloadzeit einer Seite um das 4- bis 5-fache verlängern. Ich empfehle Ihnen dringend, mod_gzip auf Ihrem Webserver zu verwenden. Allerdings mussten wir auch eine eigene Komprimierungs-Engine in PHP erstellen. In diesem Artikel werde ich vorstellen, wie man die Ausgabekontrollfunktion von PHP verwendet, um die Seitenladegeschwindigkeit erheblich zu beschleunigen.
Einführung in die Ausgabekontrollfunktionen von PHP
Das Befriedigendste an PHP4 ist, dass Sie PHP die gesamte vom Skript generierte Ausgabe zwischenspeichern lassen können, bevor Sie sich entscheiden, sie zu versenden Der Browser würde keine Inhalte empfangen. In einem Skript können Sie diese Funktionen zum Setzen von Headern und Cookies verwenden, dies ist jedoch nur ein kleiner Teil der leistungsstarken Ausgabefunktionen.
<?php void ob_start(void); ?>
weist den PHP-Prozessor an, alle Ausgaben in einen internen Puffer umzuleiten. Es wird keine Ausgabe an den Browser gesendet, bis ob_start aufgerufen wird.
<?php string ob_get_contents(void); ?>
Diese Funktion gibt den „Ausgabepuffer“ als String zurück. Sie können diese Funktion aufrufen, um die gesammelte Ausgabe an den Browser zu senden. (Nur nach Ausschalten der Pufferfunktion!!)
<?php int ob_get_length(void); ?>
Gibt die Länge der Zeichenfolge im Cache zurück.
<?php void ob_end_clean(void); ?>
Leeren Sie den Ausgabecache und schalten Sie den Ausgabecache aus. Diese Funktion muss verwendet werden, bevor der Inhalt im Cache an den Browser ausgegeben wird.
void 501([int flag])
Wird zum Ein-/Ausschalten des impliziten Flush-Aktionsschalters verwendet (Standard ist aus). Wenn Flush aktiviert ist, wird der Ausgabeinhalt jedes Mal, wenn print/echo oder andere Ausgabebefehle aufgerufen werden, sofort an den Browser gesendet.
Verwenden Sie Ausgabesteuerungen, um die PHP-Ausgabe zu komprimieren.
Sie müssen das in PHP4 kompilierte Zlib-Erweiterungspaket verwenden, um die Ausgabe zu komprimieren. Bei Bedarf können Sie die Installationsanweisungen für das Zlib-Paket in der PHP-Dokumentation einsehen.
Initialisieren Sie zunächst den Ausgabecache:
<?php ob_start(); ob_implicit_flush(0); ?>
Verwenden Sie anschließend Print, Echo oder andere Methoden Ihrer Wahl, um den gesamten Ausgabeinhalt zu generieren, zum Beispiel:
<?php print("Hey this is a compressed output!"); ?>
Nachdem die Seite generiert wurde, rufen wir den Ausgabeinhalt ab:
<?php $contents = ob_get_contents(); ob_end_clean(); ?>
Danach müssen wir erkennen, ob der Browser komprimierte Daten unterstützt. Sofern unterstützt, sendet der Browser einen ACCEPT-ENCODEING-HTTP-Header an den Server. Wir müssen nur prüfen, ob in der Variablen $HTTP_ACCEPT_ENCODING eine Zeichenfolge „gzip,deflate“ vorhanden ist.
<?php if(ereg('gzip, deflate',$HTTP_ACCEPT_ENCODING)) { // 在这里生成 Gzip 压缩的内容 } else { echo $contents; } ?>
Diese Methode ist einfach anzuwenden und klar strukturiert. Sehen wir uns an, wie man eine komprimierte Ausgabe generiert:
<?php //告诉浏览器将要收到的是gzip数据 //当然在此之前,你已经检查了它们是否支持gzip,x-gzip数据格式 //如果支持的是x-gzip,那么下面的头就要用z-gzip来代替 header("Content-Encoding: gzip"); //显示gzip文件的头 //只需显示一次 echo "x1fx8bx08x00x00x00x00x00"; //计算出文件的大小和CRC码 $Size = strlen($contents); $Crc = crc32($contents); //压缩数据 $contents = gzcompress($contents, 9); //我们不能就这样输出,因为CRC码是混乱的。 //如果我在这里使用“echo $contents”,压缩的数据会被送出, //但是却不完整。文件最后的四个字节是CRC校验码,可是只发出去了三个字节。 //最后一个字节被丢掉了。我不知道这个bug在4.0.2版中解决了没有, //不过最好避免错误的方法是把正确的CRC校验码加到压缩的数据的末尾。 // //把旧的CRC校验码剥离 $contents = substr($contents, 0, strlen($contents) - 4); //仅显示压缩的数据 echo $contents; //输出CRC,和原来数据的大小(字节) gzip_PrintFourChars($Crc); gzip_PrintFourChars($Size); function gzip_PrintFourChars($Val) { for ($i = 0; $i <4; $i ++) { echo chr($Val % 256); $Val = floor($Val / 256); } } ?> //好了,你还可以按此方式附加上更多的压缩数据。
Für tatsächliche Tests lautet der gesamte Skriptcode wie folgt:
<?php ob_start(); ob_implicit_flush(0); print("I'm compressed!n"); $contents = ob_get_contents(); ob_end_clean(); header("Content-Encoding: gzip"); echo "x1fx8bx08x00x00x00x00x00"; $Size = strlen($contents); $Crc = crc32($contents); $contents = gzcompress($contents, 9); $contents = substr($contents, 0, strlen($contents) - 4); echo $contents; gzip_PrintFourChars($Crc); gzip_PrintFourChars($Size); function gzip_PrintFourChars($Val) { for ($i = 0; $i <4; $i ++) { echo chr($Val % 256); $Val = floor($Val / 256); } } ?>
PHP-Ausgabe zwischenspeichern
Als PHP4 hatte noch nicht herausgekommen war und ich PHP3 verwenden musste, war ich sehr daran interessiert, einige Caching-Mechanismen zu entwickeln, um das Laden der Datenbank und den Zugriff auf das Dateisystem zu reduzieren. In PHP3 gibt es keine besonders gute Methode, aber mit Output-Caching wird in PHP4 alles viel einfacher.
Hier ist ein einfaches Beispiel:
<?php //为请求的URI构造一个文件名 $cached_file=md5($REQUEST_URI); if((!file_exists("/cache/$cached_file"))||(!is_valid("/cache/$cached_file"))) { //is_valid函数验证缓存,你可以用这个函数检查Cache是否过期或其他特定的条件。 //如果文件不在Cache中或者不可用则生成输出 ob_start(); ob_implicit_flush(0); //在此输出…… $contents = ob_get_contents(); ob_end_clean(); $fil=fopen($cached_file,"w+"); fwrite($fil,$contents,$strlen($contents)); fclose($fil); } /如果请求的文件在缓存中且可用,则: readfile($cached_file); ?>
Dies ist ein einfaches Beispiel. Mithilfe von Ausgabe-Caching können Sie ein komplexes System zur Inhaltsgenerierung aufbauen, das verschiedene Caches für verschiedene Chunks oder Programme, Mechanismen usw. verwendet.
Fazit
PHP-Ausgabekontrollfunktionen sind sehr nützlich, um die von Skripten generierte Ausgabe in den Cache umzuleiten. Die Ausgabe überschriebener Cache-Daten für Browser, die gzip unterstützen, kann die Ladezeiten verkürzen. Es kann auch als Caching-Mechanismus verwendet werden, um den Zugriff auf Datenquellen (Datenbanken oder Dateien) zu reduzieren, was bei der Verwendung von XML von großer Bedeutung ist.
Wenn wir eine Engine in PHP erstellen, Daten aus Datenquellen (XML-Dokumente und Datenbanken) zwischenspeichern und dynamisch Inhalte im XML-Format generieren (ohne Darstellungsdarstellung), können wir die Ausgabe dieser XML-Dateien erhalten und XSLT in beliebige konvertieren Format, das wir wollen (HTML, WAP, Palm, PDF usw.). Diese Aufgabe kann mithilfe des Ausgabecachings von PHP4 und der Sablotron XSLT-Erweiterung gut gelöst werden.
Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Techniken zum Zwischenspeichern und Komprimieren dynamischer Seiten in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Wenn Sie ein erfahrener PHP-Entwickler sind, haben Sie möglicherweise das Gefühl, dass Sie dort waren und dies bereits getan haben. Sie haben eine beträchtliche Anzahl von Anwendungen entwickelt, Millionen von Codezeilen debuggt und eine Reihe von Skripten optimiert, um op zu erreichen

Dieses Tutorial zeigt, wie XML -Dokumente mit PHP effizient verarbeitet werden. XML (Extensible Markup-Sprache) ist eine vielseitige textbasierte Markup-Sprache, die sowohl für die Lesbarkeit des Menschen als auch für die Analyse von Maschinen entwickelt wurde. Es wird üblicherweise für die Datenspeicherung ein verwendet und wird häufig verwendet

JWT ist ein offener Standard, der auf JSON basiert und zur sicheren Übertragung von Informationen zwischen Parteien verwendet wird, hauptsächlich für die Identitätsauthentifizierung und den Informationsaustausch. 1. JWT besteht aus drei Teilen: Header, Nutzlast und Signatur. 2. Das Arbeitsprinzip von JWT enthält drei Schritte: Generierung von JWT, Überprüfung von JWT und Parsingnayload. 3. Bei Verwendung von JWT zur Authentifizierung in PHP kann JWT generiert und überprüft werden, und die Funktionen und Berechtigungsinformationen der Benutzer können in die erweiterte Verwendung aufgenommen werden. 4. Häufige Fehler sind Signaturüberprüfungsfehler, Token -Ablauf und übergroße Nutzlast. Zu Debugging -Fähigkeiten gehört die Verwendung von Debugging -Tools und Protokollierung. 5. Leistungsoptimierung und Best Practices umfassen die Verwendung geeigneter Signaturalgorithmen, das Einstellen von Gültigkeitsperioden angemessen.

Eine Zeichenfolge ist eine Folge von Zeichen, einschließlich Buchstaben, Zahlen und Symbolen. In diesem Tutorial wird lernen, wie Sie die Anzahl der Vokale in einer bestimmten Zeichenfolge in PHP unter Verwendung verschiedener Methoden berechnen. Die Vokale auf Englisch sind a, e, i, o, u und sie können Großbuchstaben oder Kleinbuchstaben sein. Was ist ein Vokal? Vokale sind alphabetische Zeichen, die eine spezifische Aussprache darstellen. Es gibt fünf Vokale in Englisch, einschließlich Großbuchstaben und Kleinbuchstaben: a, e, ich, o, u Beispiel 1 Eingabe: String = "TutorialPoint" Ausgabe: 6 erklären Die Vokale in der String "TutorialPoint" sind u, o, i, a, o, ich. Insgesamt gibt es 6 Yuan

Statische Bindung (statisch: :) implementiert die späte statische Bindung (LSB) in PHP, sodass das Aufrufen von Klassen in statischen Kontexten anstatt Klassen zu definieren. 1) Der Analyseprozess wird zur Laufzeit durchgeführt.

Was sind die magischen Methoden von PHP? Zu den magischen Methoden von PHP gehören: 1. \ _ \ _ Konstrukt, verwendet, um Objekte zu initialisieren; 2. \ _ \ _ Destruct, verwendet zur Reinigung von Ressourcen; 3. \ _ \ _ Call, behandeln Sie nicht existierende Methodenaufrufe; 4. \ _ \ _ GET, Implementieren Sie den dynamischen Attributzugriff; 5. \ _ \ _ Setzen Sie dynamische Attributeinstellungen. Diese Methoden werden in bestimmten Situationen automatisch aufgerufen, wodurch die Code -Flexibilität und -Effizienz verbessert werden.
