


PHP-Caching-Toolklasse zur Implementierung des Webseiten-Caching
Aug 08, 2016 am 09:22 AMDie PHP-Cache-Tool-Klasse implementiert das Zwischenspeichern von Webseiten.
Wenn das PHP-Programm dem gro?en Datenverkehr widersteht, sind dynamische Websites oft schwer zu überstehen, daher muss ein Caching-Mechanismus eingeführt werden. Im Allgemeinen gibt es zwei Arten von Cache
1. Datei-Caching
2. Datenabfrage-Ergebnis-Caching, Verwendung von Speicher zur Implementierung des Cachings
In diesem Beispiel wird haupts?chlich Datei-Caching verwendet.
Das Hauptprinzip besteht darin, die Cache-Funktion zum Speichern der Webseiten-Anzeigeergebnisse zu verwenden. Bei einem erneuten Aufruf innerhalb der angegebenen Zeit kann die Cache-Datei geladen werden.
Werkzeugcode:
// 文件緩存類(lèi) class Cache { /** * $dir : 緩存文件存放目錄 * $lifetime : 緩存文件有效期,單位為秒 * $cacheid : 緩存文件路徑,包含文件名 * $ext : 緩存文件擴(kuò)展名(可以不用),這里使用是為了查看文件方便 */ private $dir; private $lifetime; private $cacheid; private $ext; /** * 析構(gòu)函數(shù),檢查緩存目錄是否有效,默認(rèn)賦值 */ function __construct($dir = '', $lifetime = 1800) { if ($this->dir_isvalid ( $dir )) { $this->dir = $dir; $this->lifetime = $lifetime; $this->ext = '.Php'; $this->cacheid = $this->getcacheid (); } } /** * 檢查緩存是否有效 */ private function isvalid() { if (! file_exists ( $this->cacheid )) return false; if (! (@$mtime = filemtime ( $this->cacheid ))) return false; if (mktime () - $mtime > $this->lifetime) return false; return true; } /** * 寫(xiě)入緩存 * $mode == 0 , 以瀏覽器緩存的方式取得頁(yè)面內(nèi)容 * $mode == 1 , 以直接賦值(通過(guò)$content參數(shù)接收)的方式取得頁(yè)面內(nèi)容 * $mode == 2 , 以本地讀取(fopen ile_get_contents)的方式取得頁(yè)面內(nèi)容(似乎這種方式?jīng)]什么必要) */ public function write($mode = 0, $content = '') { switch ($mode) { case 0 : $content = ob_get_contents (); break; default : break; } ob_end_flush (); try { file_put_contents ( $this->cacheid, $content ); } catch ( Exception $e ) { $this->error ( '寫(xiě)入緩存失敗!請(qǐng)檢查目錄權(quán)限!' ); } } /** * 加載緩存 * exit() 載入緩存后終止原頁(yè)面程序的執(zhí)行,緩存無(wú)效則運(yùn)行原頁(yè)面程序生成緩存 * ob_start() 開(kāi)啟瀏覽器緩存用于在頁(yè)面結(jié)尾處取得頁(yè)面內(nèi)容 */ public function load() { if ($this->isvalid ()) { // 以下兩種方式,哪種方式好????? require_once ($this->cacheid); echo "<!--緩存-->"; // echo file_get_contents($this->cacheid); exit (); } else { ob_start (); } } /** * 清除緩存 */ public function clean() { try { unlink ( $this->cacheid ); } catch ( Exception $e ) { $this->error ( '清除緩存文件失敗!請(qǐng)檢查目錄權(quán)限!' ); } } /** * 取得緩存文件路徑 */ private function getcacheid() { return $this->dir . md5 ( $this->geturl () ) . $this->ext; } /** * 檢查目錄是否存在或是否可創(chuàng)建 */ private function dir_isvalid($dir) { if (is_dir ( $dir )) return true; try { mkdir ( $dir, 0777 ); } catch ( Exception $e ) { $this->error ( '所設(shè)定緩存目錄不存在并且創(chuàng)建失敗!請(qǐng)檢查目錄權(quán)限!' ); return false; } return true; } /** * 取得當(dāng)前頁(yè)面完整url */ private function geturl() { $url = ''; if (isset ( $_SERVER ['REQUEST_URI'] )) { $url = $_SERVER ['REQUEST_URI']; } else { $url = $_SERVER ['Php_SELF']; $url .= empty ( $_SERVER ['QUERY_STRING'] ) ? '' : '?' . $_SERVER ['QUERY_STRING']; } return $url; } /** * 輸出錯(cuò)誤信息 */ private function error($str) { echo '<div>' . $str . '</div>'; } }
Verwendungsmethode:
Die Verwendungsmethode ist wie folgt:
Teil des Codes wird vor dem zwischenzuspeichernden Logikcode platziert:
$cachedir = './Cache/'; // 設(shè)定緩存目錄 $cache = new Cache ( $cachedir, 33 ); // 省略參數(shù)即采用缺省設(shè)置, $cache = new Cache($cachedir); if (@$_GET ['cacheact'] != 'rewrite' || @$_GET ['clearCache'] == 'ok') // 此處為一技巧,通過(guò)xx.Php?cacheact=rewrite更新緩存,以此類(lèi)推,還可以設(shè)定一些其它操作 $cache->load (); // 裝載緩存,緩存有效則不執(zhí)行以下頁(yè)面代碼 // 頁(yè)面代碼開(kāi)始
Ein Teil davon wird nach dem zwischenzuspeichernden Logikcode platziert:
// 頁(yè)面代碼結(jié)束 $cache->write (); // 首次運(yùn)行或緩存過(guò)期,生成緩存
Ursprüngliche Adresse: http://sijienet.com/bbs/?leibie=showinfo&id=50
Das Obige stellt die PHP-Caching-Tool-Klasse zum Implementieren des Webseiten-Caching vor, einschlie?lich Aspekten des Inhalts. Ich hoffe, dass es für Freunde hilfreich sein wird, die sich für PHP-Tutorials interessieren.

Hei?e KI -Werkzeuge

Undress AI Tool
Ausziehbilder kostenlos

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

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

Clothoff.io
KI-Kleiderentferner

Video Face Swap
Tauschen Sie Gesichter in jedem Video mühelos mit unserem v?llig kostenlosen KI-Gesichtstausch-Tool aus!

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

Viele Benutzer werden sich bei der Auswahl von Smartwatches für die Marke Huawei entscheiden. Viele Benutzer sind neugierig auf den Unterschied zwischen Huawei GT3pro und GT4. Was sind die Unterschiede zwischen Huawei GT3pro und GT4? 1. Aussehen GT4: 46 mm und 41 mm, das Material ist Glasspiegel + Edelstahlgeh?use + hochaufl?sende Faserrückschale. GT3pro: 46,6 mm und 42,9 mm, das Material ist Saphirglas + Titangeh?use/Keramikgeh?use + Keramikrückschale 2. Gesundes GT4: Mit dem neuesten Huawei Truseen5.5+-Algorithmus werden die Ergebnisse genauer. GT3pro: EKG-Elektrokardiogramm sowie Blutgef?? und Sicherheit hinzugefügt

Funktion bedeutet Funktion. Es handelt sich um einen wiederverwendbaren Codeblock mit bestimmten Funktionen. Er kann Eingabeparameter akzeptieren, bestimmte Operationen ausführen und Ergebnisse zurückgeben. Code, um die Wiederverwendbarkeit und Wartbarkeit des Codes zu verbessern.

Warum das Snipping-Tool unter Windows 11 nicht funktioniert Das Verst?ndnis der Grundursache des Problems kann dabei helfen, die richtige L?sung zu finden. Hier sind die h?ufigsten Gründe, warum das Snipping Tool m?glicherweise nicht ordnungsgem?? funktioniert: Focus Assistant ist aktiviert: Dies verhindert, dass das Snipping Tool ge?ffnet wird. Besch?digte Anwendung: Wenn das Snipping-Tool beim Start abstürzt, ist es m?glicherweise besch?digt. Veraltete Grafiktreiber: Inkompatible Treiber k?nnen das Snipping-Tool beeintr?chtigen. St?rungen durch andere Anwendungen: Andere laufende Anwendungen k?nnen mit dem Snipping Tool in Konflikt geraten. Das Zertifikat ist abgelaufen: Ein Fehler w?hrend des Upgrade-Vorgangs kann zu diesem Problem führen. Diese einfache L?sung ist für die meisten Benutzer geeignet und erfordert keine besonderen technischen Kenntnisse. 1. Aktualisieren Sie Windows- und Microsoft Store-Apps

In Java bedeutet ?privat“ ?privat“ und ist ein Zugriffskontrollmodifikator, der zum ?ndern von Klassen, Eigenschaften und Methoden verwendet wird. Mit ?private“ ge?nderte Klassenmitglieder k?nnen nur von den Methoden der Klasse selbst aufgerufen und ge?ndert werden und k?nnen von keiner anderen Klasse (einschlie?lich Unterklassen der Klasse) aufgerufen und referenziert werden. Daher verfügt der private Modifikator über die h?chste Schutzstufe.

In diesem Artikel lernen wir die Funktion enumerate() und den Zweck der Funktion ?enumerate()“ in Python kennen. Was ist die Funktion enumerate()? Die Funktion enumerate() von Python akzeptiert eine Datensammlung als Parameter und gibt ein Aufz?hlungsobjekt zurück. Aufz?hlungsobjekte werden als Schlüssel-Wert-Paare zurückgegeben. Der Schlüssel ist der Index, der jedem Element entspricht, und der Wert sind die Elemente. Syntax enumerate(iterable,start) Parameter iterable – Die übergebene Datensammlung kann als Aufz?hlungsobjekt namens iterablestart zurückgegeben werden – Wie der Name schon sagt, wird der Startindex des Aufz?hlungsobjekts durch start definiert. wenn wir es ignorieren

Detaillierte Erl?uterung der Rolle und Funktion der MySQL.proc-Tabelle. MySQL ist ein beliebtes relationales Datenbankverwaltungssystem. Wenn Entwickler MySQL verwenden, müssen sie h?ufig gespeicherte Prozeduren erstellen und verwalten. Die MySQL.proc-Tabelle ist eine sehr wichtige Systemtabelle. Sie speichert Informationen zu allen gespeicherten Prozeduren in der Datenbank, einschlie?lich des Namens, der Definition, der Parameter usw. der gespeicherten Prozeduren. In diesem Artikel erkl?ren wir ausführlich die Rolle und Funktionalit?t der MySQL.proc-Tabelle

Teil 1: Erste Schritte zur Fehlerbehebung überprüfen des Apple-Systemstatus: Bevor wir uns mit komplexen L?sungen befassen, beginnen wir mit den Grundlagen. Das Problem liegt m?glicherweise nicht an Ihrem Ger?t; die Server von Apple sind m?glicherweise ausgefallen. Besuchen Sie die Systemstatusseite von Apple, um zu sehen, ob der AppStore ordnungsgem?? funktioniert. Wenn es ein Problem gibt, k?nnen Sie nur warten, bis Apple es behebt. überprüfen Sie Ihre Internetverbindung: Stellen Sie sicher, dass Sie über eine stabile Internetverbindung verfügen, da das Problem ?Verbindung zum AppStore nicht m?glich“ manchmal auf eine schlechte Verbindung zurückzuführen ist. Versuchen Sie, zwischen WLAN und mobilen Daten zu wechseln oder die Netzwerkeinstellungen zurückzusetzen (Allgemein > Zurücksetzen > Netzwerkeinstellungen zurücksetzen > Einstellungen). Aktualisieren Sie Ihre iOS-Version:

php提交表單通過(guò)后,彈出的對(duì)話(huà)框怎樣在當(dāng)前頁(yè)彈出php提交表單通過(guò)后,彈出的對(duì)話(huà)框怎樣在當(dāng)前頁(yè)彈出而不是在空白頁(yè)彈出?想實(shí)現(xiàn)這樣的效果:而不是空白頁(yè)彈出:------解決方案--------------------如果你的驗(yàn)證用PHP在后端,那么就用Ajax;僅供參考:HTML code
