>  기사  >  백엔드 개발  >  CodeIgniter 미들웨어: 페이지 캐싱 및 애플리케이션의 정적 처리 가속화

CodeIgniter 미들웨어: 페이지 캐싱 및 애플리케이션의 정적 처리 가속화

王林
王林원래의
2023-07-30 21:41:18697검색

CodeIgniter 미들웨어: 애플리케이션의 페이지 캐싱 및 정적 처리 가속화

소개:
애플리케이션을 개발할 때 웹 페이지 로딩 속도를 높이는 것은 중요한 고려 사항입니다. 페이지 캐싱과 정적 처리는 이 목표를 달성하기 위한 효과적인 수단입니다. CodeIgniter 프레임워크는 페이지 캐싱 및 정적 처리를 쉽게 구현할 수 있는 미들웨어 기능을 제공하여 애플리케이션의 로딩 속도를 가속화합니다.

1. 페이지 캐싱

페이지 캐싱은 동적으로 생성된 웹 페이지 콘텐츠를 서버에 캐시하고 후속 요청에서 캐시된 콘텐츠를 직접 반환하므로 페이지를 다시 생성하는 비용이 발생하지 않습니다. CodeIgniter 프레임워크는 내장된 페이지 캐싱 클래스를 제공하며, 미들웨어를 통해 쉽게 페이지 캐싱 기능을 구현할 수 있습니다.

1.1 구성 파일 설정 캐시 경로
먼저 구성 파일에 캐시 경로를 설정해야 합니다. config/config.php 파일을 열고 다음 코드를 찾으세요: 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']를 캐시 경로로 설정하세요. 예:

rrreee
1.2 CacheMiddleware 클래스 생성

다음으로 페이지 캐싱 기능을 구현하기 위해 CacheMiddleware라는 클래스를 생성합니다. app/Middleware 디렉터리를 열고 CacheMiddleware.php라는 파일을 만든 후 다음 코드를 파일에 복사합니다. 🎜rrreee🎜1.3 미들웨어 등록 🎜그런 다음 를 엽니다. >app/Config/App.php 파일에서 다음 코드를 찾습니다: 🎜rrreee🎜 $middleware 배열에 요소를 추가하고 CacheMiddleware 클래스를 Into에 추가합니다. the array: 🎜rrreee🎜1.4 테스트 페이지 캐시🎜 이제 페이지 캐시를 구성했습니다. 앱을 열고 브라우저의 페이지를 방문한 다음 페이지를 새로 고치세요. 페이지 콘텐츠가 캐시되기 때문에 두 번째 새로 고침 시 페이지 로딩 속도가 크게 증가하는 것을 확인할 수 있습니다. 🎜🎜2. 정적 처리🎜🎜정적 처리는 동적으로 생성된 웹 페이지 콘텐츠를 정적 HTML 파일로 저장하고 사용자에게 직접 반환하므로 동적 생성이 필요하지 않습니다. CodeIgniter 프레임워크는 정적 처리를 달성하기 위한 관련 기능을 제공합니다. 🎜🎜2.1 StaticMiddleware 클래스 생성🎜다음으로 페이지의 정적 처리를 구현하기 위해 StaticMiddleware라는 클래스를 생성합니다. app/Middleware 디렉터리를 열고 StaticMiddleware.php라는 파일을 만든 후 다음 코드를 파일에 복사합니다. 🎜rrreee🎜2.2 미들웨어 등록 🎜그런 다음 를 엽니다. >app/Config/App.php 파일에서 다음 코드를 찾습니다: 🎜rrreee🎜 $middleware 배열에 요소를 추가하고 StaticMiddleware 클래스를 Into에 추가합니다. 배열: 🎜rrreee🎜2.3 테스트 정적 처리🎜이제 정적 처리를 구성했습니다. 앱을 열고 브라우저의 페이지를 방문한 다음 페이지를 새로 고치세요. 현재 URL로 명명된 HTML 파일이 app/static/ 디렉터리에 저장되어 있음을 알 수 있습니다. 페이지 콘텐츠는 HTML 파일에서 직접 로드되며 로드 속도는 동적으로 생성되는 것보다 빠릅니다. 페이지. 🎜🎜결론: 🎜 미들웨어를 통해 페이지 캐싱 및 정적 처리를 구현하면 애플리케이션의 로딩 속도를 크게 향상시킬 수 있습니다. CodeIgniter 프레임워크에서는 미들웨어 클래스를 구현하고 이를 애플리케이션에 등록하기만 하면 이러한 기능을 쉽게 구현할 수 있습니다. 미들웨어 기능을 사용할 때 최상의 성능 향상을 얻으려면 적절한 캐시 시간과 캐시 경로를 고려해야 합니다. 🎜

위 내용은 CodeIgniter 미들웨어: 페이지 캐싱 및 애플리케이션의 정적 처리 가속화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.