Rumah > Artikel > pembangunan bahagian belakang > CodeIgniter middleware: Mempercepatkan caching halaman dan pemprosesan statik aplikasi
CodeIgniter middleware: Mempercepatkan caching halaman dan pemprosesan statik aplikasi
Pengenalan:
Apabila membangunkan aplikasi, meningkatkan kelajuan pemuatan halaman web adalah pertimbangan penting. Caching halaman dan pemprosesan statik adalah cara yang berkesan untuk mencapai matlamat ini. Rangka kerja CodeIgniter menyediakan fungsi middleware yang boleh melaksanakan caching halaman dan pemprosesan statik dengan mudah, dengan itu mempercepatkan kelajuan pemuatan aplikasi.
1. Cache halaman
Cache halaman menjana kandungan halaman web secara dinamik pada pelayan dan secara langsung mengembalikan kandungan cache dalam permintaan berikutnya, mengelakkan kos untuk menjana semula halaman. Rangka kerja CodeIgniter menyediakan kelas caching halaman terbina dalam, dan kami boleh melaksanakan fungsi caching halaman dengan mudah melalui middleware.
1.1 Tetapan fail konfigurasi laluan cache
Pertama, kita perlu menetapkan laluan cache dalam fail konfigurasi. Buka fail config/config.php
dan cari kod berikut: 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']
ke laluan cache, contohnya: rrreee
1.2 Cipta Kelas CacheMiddleware
CacheMiddleware
untuk melaksanakan fungsi caching halaman. Buka direktori app/Middleware
, buat fail bernama CacheMiddleware.php
dan salin kod berikut ke dalam fail: 🎜rrreee🎜1.3 Daftar Middleware 🎜Kemudian, buka app/Config/App.php
fail, cari kod berikut: 🎜rrreee🎜Tambahkan elemen pada tatasusunan $middleware
dan tambahkan kelas CacheMiddleware
Ke dalam tatasusunan: 🎜rrreee🎜1.4 Uji cache halaman🎜Kini, kami telah mengkonfigurasi cache halaman. Buka apl anda, lawati halaman dalam penyemak imbas anda dan muat semula halaman tersebut. Anda akan mendapati bahawa kelajuan memuatkan halaman meningkat dengan ketara pada muat semula kedua kerana kandungan halaman dicache. 🎜🎜2. Pemprosesan statik🎜🎜Pemprosesan statik adalah untuk menyimpan kandungan halaman web yang dijana secara dinamik sebagai fail HTML statik dan mengembalikannya terus kepada pengguna, menghapuskan keperluan untuk penjanaan dinamik. Rangka kerja CodeIgniter menyediakan fungsi berkaitan untuk mencapai pemprosesan statik. 🎜🎜2.1 Cipta kelas StaticMiddleware🎜Seterusnya, kami mencipta kelas bernama StaticMiddleware
untuk melaksanakan pemprosesan statik halaman. Buka direktori app/Middleware
, buat fail bernama StaticMiddleware.php
dan salin kod berikut ke dalam fail: 🎜rrreee🎜2.2 Daftar Middleware 🎜Kemudian, buka app/Config/App.php
fail, cari kod berikut: 🎜rrreee🎜Tambahkan elemen pada tatasusunan $middleware
dan tambahkan kelas StaticMiddleware
ke dalam tatasusunan: 🎜rrreee🎜2.3 Uji pemprosesan statik🎜Kini, kami telah mengkonfigurasi pemprosesan statik. Buka apl anda, lawati halaman dalam penyemak imbas anda dan muat semula halaman tersebut. Anda akan mendapati bahawa fail HTML yang dinamakan dengan URL semasa disimpan dalam direktori app/static/
Kandungan halaman akan dimuatkan terus daripada fail HTML dan kelajuan pemuatan lebih cepat daripada yang dijana secara dinamik muka surat. 🎜🎜Kesimpulan: 🎜 Melaksanakan cache halaman dan pemprosesan statik melalui perisian tengah boleh meningkatkan kelajuan pemuatan aplikasi dengan ketara. Dalam rangka kerja CodeIgniter, kita hanya perlu melaksanakan kelas middleware dan mendaftarkannya dalam aplikasi untuk melaksanakan fungsi ini dengan mudah. Apabila menggunakan fungsi middleware, kita perlu mempertimbangkan masa cache dan laluan cache yang sesuai untuk mendapatkan peningkatan prestasi terbaik. 🎜Atas ialah kandungan terperinci CodeIgniter middleware: Mempercepatkan caching halaman dan pemprosesan statik aplikasi. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!