CodeIgniter-Middleware: Beschleunigen Sie das Seiten-Caching und die statische Verarbeitung von Anwendungen.
Einführung:
Bei der Entwicklung von Anwendungen ist die Verbesserung der Ladegeschwindigkeit von Webseiten ein wichtiger Gesichtspunkt. Seiten-Caching und statische Verarbeitung sind wirksame Mittel, um dieses Ziel zu erreichen. Das CodeIgniter-Framework bietet Middleware-Funktionen, mit denen Seiten-Caching und statische Verarbeitung einfach implementiert werden können, wodurch die Ladegeschwindigkeit von Anwendungen beschleunigt wird.
1. Seiten-Caching
Beim Seiten-Caching werden dynamisch generierte Webseiteninhalte auf dem Server zwischengespeichert und der zwischengespeicherte Inhalt bei nachfolgenden Anfragen direkt zurückgegeben, wodurch die Kosten für die Neugenerierung der Seite vermieden werden. Das CodeIgniter-Framework bietet integrierte Seiten-Caching-Klassen, und wir können Seiten-Caching-Funktionen einfach über Middleware implementieren.
1.1 Cache-Pfad in der Konfigurationsdatei festlegen
Zuerst müssen wir den Cache-Pfad in der Konfigurationsdatei festlegen. Öffnen Sie die Datei config/config.php
und suchen Sie den folgenden Code: config/config.php
文件,找到以下代码:
$config['cache_path'] = '';
将$config['cache_path']
设置为缓存路径,例如:
$config['cache_path'] = APPPATH . 'cache/';
1.2 创建CacheMiddleware类
接下来,我们创建一个名为CacheMiddleware
的类,实现页面缓存功能。打开app/Middleware
目录,创建一个名为CacheMiddleware.php
的文件,并将以下代码复制到文件中:
<?php defined('BASEPATH') or exit('No direct script access allowed'); class CacheMiddleware { protected $CI; public function __construct() { $this->CI =& get_instance(); } public function handle() { if ($this->CI->input->server('REQUEST_METHOD') == 'GET') { $this->CI->load->driver('cache', array('adapter' => 'file')); $cache_key = md5(uri_string()); if ($this->CI->cache->get($cache_key)) { echo $this->CI->cache->get($cache_key); exit(); } else { ob_start(); } } } public function terminate() { if ($this->CI->input->server('REQUEST_METHOD') == 'GET') { $output = ob_get_contents(); ob_end_flush(); $cache_key = md5(uri_string()); $this->CI->cache->save($cache_key, $output, 3600); } } }
1.3 注册中间件
然后,打开app/Config/App.php
文件,找到以下代码:
public $middleware = [];
将$middleware
数组添加一个元素,并将CacheMiddleware
类添加到数组中:
public $middleware = [ AppMiddlewareCacheMiddleware::class ];
1.4 测试页面缓存
现在,我们已经配置好了页面缓存。打开你的应用程序,在浏览器中访问一个页面,然后刷新页面。你会发现第二次刷新时,页面加载速度显著提高,原因是页面内容被缓存起来了。
二、静态化处理
静态化处理是将动态生成的网页内容保存为静态HTML文件,直接返回给用户,省去了动态生成的过程。CodeIgniter框架提供了相关函数可以实现静态化处理。
2.1 创建StaticMiddleware类
接下来,我们创建一个名为StaticMiddleware
的类,实现页面静态化处理。打开app/Middleware
目录,创建一个名为StaticMiddleware.php
的文件,并将以下代码复制到文件中:
<?php defined('BASEPATH') or exit('No direct script access allowed'); class StaticMiddleware { protected $CI; public function __construct() { $this->CI =& get_instance(); } public function handle() { if ($this->CI->input->server('REQUEST_METHOD') == 'GET') { $file_path = APPPATH . 'static/' . uri_string() . '.html'; if (file_exists($file_path)) { echo file_get_contents($file_path); exit(); } else { ob_start(); } } } public function terminate() { if ($this->CI->input->server('REQUEST_METHOD') == 'GET') { $output = ob_get_contents(); ob_end_flush(); $file_path = APPPATH . 'static/' . uri_string() . '.html'; file_put_contents($file_path, $output); } } }
2.2 注册中间件
然后,打开app/Config/App.php
文件,找到以下代码:
public $middleware = [];
将$middleware
数组添加一个元素,并将StaticMiddleware
类添加到数组中:
public $middleware = [ AppMiddlewareStaticMiddleware::class ];
2.3 测试静态化处理
现在,我们已经配置好了静态化处理。打开你的应用程序,在浏览器中访问一个页面,然后刷新页面。你会发现一个以当前URL命名的HTML文件被保存在app/static/
rrreee
$config['cache_path']
auf den Cache-Pfad, zum Beispiel: rrreee
1.2 CacheMiddleware-Klasse erstellen
CacheMiddleware
, um die Seiten-Caching-Funktion zu implementieren. Öffnen Sie das Verzeichnis app/Middleware
, erstellen Sie eine Datei mit dem Namen CacheMiddleware.php
und kopieren Sie den folgenden Code in die Datei: 🎜rrreee🎜1.3 Middleware registrieren 🎜Öffnen Sie dann CacheMiddleware
hinzu das Array: 🎜rrreee🎜1.4 Seiten-Cache testen🎜Jetzt haben wir den Seiten-Cache konfiguriert. Öffnen Sie Ihre App, besuchen Sie eine Seite in Ihrem Browser und aktualisieren Sie die Seite. Sie werden feststellen, dass sich die Ladegeschwindigkeit der Seite bei der zweiten Aktualisierung erheblich erhöht, da der Seiteninhalt zwischengespeichert wird. 🎜🎜2. Statische Verarbeitung🎜🎜Bei der statischen Verarbeitung wird der dynamisch generierte Webseiteninhalt als statische HTML-Datei gespeichert und direkt an den Benutzer zurückgegeben, sodass keine dynamische Generierung erforderlich ist. Das CodeIgniter-Framework bietet verwandte Funktionen, um eine statische Verarbeitung zu erreichen. 🎜🎜2.1 Erstellen Sie die StaticMiddleware-Klasse. 🎜Als nächstes erstellen wir eine Klasse mit dem Namen StaticMiddleware
, um die statische Verarbeitung der Seite zu implementieren. Öffnen Sie das Verzeichnis app/Middleware
, erstellen Sie eine Datei mit dem Namen StaticMiddleware.php
und kopieren Sie den folgenden Code in die Datei: 🎜rrreee🎜2.2 Middleware registrieren 🎜Öffnen Sie dann StaticMiddleware
hinzu das Array: 🎜rrreee🎜2.3 Statische Verarbeitung testen🎜Jetzt haben wir die statische Verarbeitung konfiguriert. Öffnen Sie Ihre App, besuchen Sie eine Seite in Ihrem Browser und aktualisieren Sie die Seite. Sie werden feststellen, dass eine HTML-Datei mit dem Namen der aktuellen URL im Verzeichnis app/static/
gespeichert ist. Der Seiteninhalt wird direkt aus der HTML-Datei geladen und die Ladegeschwindigkeit ist schneller als bei der dynamischen Generierung Seiten. 🎜🎜Fazit: 🎜 Die Implementierung von Seiten-Caching und statischer Verarbeitung durch Middleware kann die Ladegeschwindigkeit der Anwendung erheblich verbessern. Im CodeIgniter-Framework müssen wir nur die Middleware-Klasse implementieren und in der Anwendung registrieren, um diese Funktionen einfach zu implementieren. Bei der Verwendung von Middleware-Funktionen müssen wir geeignete Cache-Zeit und Cache-Pfade berücksichtigen, um die beste Leistungsverbesserung zu erzielen. 🎜Das obige ist der detaillierte Inhalt vonCodeIgniter-Middleware: Beschleunigen Sie das Seiten-Caching und die statische Verarbeitung von Anwendungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!