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 중국어 웹사이트의 기타 관련 기사를 참조하세요!