I have implemented static page caching, which is also file caching, in the PHP framework I wrote. Can it speed up page loading?
I have implemented static page caching, which is also file caching, in the PHP framework I wrote. Can it speed up page loading?
Of course it is possible, but pay attention to the time it takes to output the static cache. If the same amount of program code is passed before displaying the static cache and rendering the dynamic page output, the improvement in page loading speed will naturally not be much.
If you use PHP to generate cache, you should add a cache judgment before the controller logic starts. If it is judged when the controller renders the template, the performance improvement effect will not be obvious.
I will talk about a method below that does not require PHP to participate in cache generation and use, which is definitely more efficient than any caching system that requires PHP to participate.
That is implemented using Nginxfastcgi_cache
, such as caching WordPress:
<code>fastcgi_temp_path /png/nginx/1.5.7/ngx_fcgi_tmp; fastcgi_cache_path /png/nginx/1.5.7/ngx_fcgi_cache levels=1:2 keys_zone=WORDPRESS:512m inactive=1d max_size=1g; fastcgi_cache_valid 200 301 302 1d; #缓存1天(day) fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_cache_key $request_method://$host$request_uri; location ~ \.php$ { fastcgi_cache WORDPRESS; }</code>
PHP only needs to implement the cache deletion function:
<code>PHP示例代码purge.php: 以下脚本要清除页面 GET://www.example.com/sample-page 的缓存: /png/nginx/1.5.7/ngx_fcgi_cache/5/b6/abad4d0ad087b7eecaac98d0a2a08b65 <?php header("Cache-Control: no-cache, must-revalidate, max-age=0"); //HTTP 1.1 header("Pragma: no-cache"); //HTTP 1.0 $dir = '/png/nginx/1.5.7/ngx_fcgi_cache'; $md5 = md5('GET://www.example.com/sample-page'); $cache = $dir.'/'.substr($md5, -1, 1).'/'.substr($md5, -3, 2).'/'.$md5; # 其中substr($md5, -3, 2)的-3表示从字符串$md5倒数第3个位置开始,截取长度为2的字串,也就是b6. if (@unlink($cache)) { echo '清除缓存成功。'; } else { echo '清除缓存失败。'; }</code>
General PHP frameworks have built-in tags, and these built-in tags need to be parsed by the framework into native PHP scripts. Then it is handed over to cgi for execution. If a cache is generated, the process of parsing tags can be omitted, which will naturally speed up the process