Maison > développement back-end > tutoriel php > Middleware CodeIgniter : accélère la mise en cache des pages et le traitement statique des applications

Middleware CodeIgniter : accélère la mise en cache des pages et le traitement statique des applications

王林
Libérer: 2023-07-30 21:42:01
original
743 Les gens l'ont consulté

Middleware CodeIgniter : accélère la mise en cache des pages et le traitement statique des applications

Introduction :
Lors du développement d'applications, l'amélioration de la vitesse de chargement des pages Web est une considération importante. La mise en cache des pages et le traitement statique sont des moyens efficaces pour atteindre cet objectif. Le framework CodeIgniter fournit des fonctions middleware qui peuvent facilement implémenter la mise en cache des pages et le traitement statique, accélérant ainsi la vitesse de chargement des applications.

1. Mise en cache des pages

La mise en cache des pages met en cache le contenu des pages Web généré de manière dynamique sur le serveur et renvoie directement le contenu mis en cache dans les requêtes ultérieures, évitant ainsi le coût de régénération de la page. Le framework CodeIgniter fournit une classe de mise en cache de pages intégrée, et nous pouvons facilement implémenter la fonction de mise en cache de pages via un middleware.

1.1 Chemin du cache de définition du fichier de configuration
Tout d'abord, nous devons définir le chemin du cache dans le fichier de configuration. Ouvrez le fichier config/config.php et recherchez le code suivant : config/config.php文件,找到以下代码:

$config['cache_path'] = '';
Copier après la connexion

$config['cache_path']设置为缓存路径,例如:

$config['cache_path'] = APPPATH . 'cache/';
Copier après la connexion

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);
        }
    }
}
Copier après la connexion

1.3 注册中间件
然后,打开app/Config/App.php文件,找到以下代码:

public $middleware = [];
Copier après la connexion
Copier après la connexion

$middleware数组添加一个元素,并将CacheMiddleware类添加到数组中:

public $middleware = [
    AppMiddlewareCacheMiddleware::class
];
Copier après la connexion

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);
        }
    }
}
Copier après la connexion

2.2 注册中间件
然后,打开app/Config/App.php文件,找到以下代码:

public $middleware = [];
Copier après la connexion
Copier après la connexion

$middleware数组添加一个元素,并将StaticMiddleware类添加到数组中:

public $middleware = [
    AppMiddlewareStaticMiddleware::class
];
Copier après la connexion

2.3 测试静态化处理
现在,我们已经配置好了静态化处理。打开你的应用程序,在浏览器中访问一个页面,然后刷新页面。你会发现一个以当前URL命名的HTML文件被保存在app/static/rrreee

Définissez $config['cache_path'] sur le chemin du cache, par exemple :

rrreee
1.2 Créer une classe CacheMiddleware

Ensuite, nous créons une classe nommée CacheMiddleware pour implémenter la fonction de mise en cache des pages. Ouvrez le répertoire app/Middleware, créez un fichier nommé CacheMiddleware.php et copiez le code suivant dans le fichier : 🎜rrreee🎜1.3 Enregistrez le middleware 🎜Ensuite, ouvrez app/Config/App.php, recherchez le code suivant : 🎜rrreee🎜Ajoutez un élément au tableau $middleware et ajoutez la classe CacheMiddleware dans le tableau : 🎜rrreee🎜1.4 Test du cache des pages🎜Maintenant, nous avons configuré le cache des pages. Ouvrez votre application, visitez une page de votre navigateur et actualisez la page. Vous constaterez que la vitesse de chargement des pages augmente considérablement lors de la deuxième actualisation car le contenu de la page est mis en cache. 🎜🎜2. Traitement statique🎜🎜Le traitement statique consiste à enregistrer le contenu de la page Web généré dynamiquement sous forme de fichier HTML statique et à le renvoyer directement à l'utilisateur, éliminant ainsi le besoin de génération dynamique. Le framework CodeIgniter fournit des fonctions associées pour réaliser un traitement statique. 🎜🎜2.1 Créer une classe StaticMiddleware🎜Ensuite, nous créons une classe nommée StaticMiddleware pour implémenter le traitement statique de la page. Ouvrez le répertoire app/Middleware, créez un fichier nommé StaticMiddleware.php et copiez le code suivant dans le fichier : 🎜rrreee🎜2.2 Enregistrez le middleware 🎜Ensuite, ouvrez app/Config/App.php, recherchez le code suivant : 🎜rrreee🎜Ajoutez un élément au tableau $middleware et ajoutez la classe StaticMiddleware dans le tableau : 🎜rrreee🎜2.3 Test du traitement statique🎜Maintenant, nous avons configuré le traitement statique. Ouvrez votre application, visitez une page de votre navigateur et actualisez la page. Vous constaterez qu'un fichier HTML nommé avec l'URL actuelle est enregistré dans le répertoire app/static/. Le contenu de la page sera chargé directement à partir du fichier HTML et la vitesse de chargement est plus rapide que celle générée dynamiquement. pages. 🎜🎜Conclusion : 🎜 La mise en œuvre de la mise en cache des pages et du traitement statique via un middleware peut améliorer considérablement la vitesse de chargement de l'application. Dans le framework CodeIgniter, il suffit d'implémenter la classe middleware et de l'enregistrer dans l'application pour implémenter facilement ces fonctions. Lors de l'utilisation de fonctions middleware, nous devons prendre en compte le temps de cache et le chemin de cache appropriés afin d'obtenir la meilleure amélioration des performances. 🎜

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal