登录

我在自己写的PHP框架中实现了静态页面缓存也就是文件缓存,请问可以加快页面加载速度吗?

我在自己写的PHP框架中实现了静态页面缓存也就是文件缓存,请问可以加快页面加载速度吗?

# PHP
黄舟黄舟2195 天前422 次浏览

全部回复(3) 我要回复

  • 高洛峰

    高洛峰2017-04-11 10:41:25

    一般的php框架都有内置标签,而这些内置标签,需要框架去解析成原生php脚本。然后再交给cgi执行,如果生成了缓存的话就可免去解析标签这个过程,自然可以提速哦

    回复
    0
  • 高洛峰

    高洛峰2017-04-11 10:41:25

    如果使用PHP生成缓存,那应该在控制器逻辑开始之前加一个缓存判断,如果是在控制器渲染模板的时候判断,性能提升效果就不明显了.

    我下面说一种不需要PHP参与缓存生成和使用的方法,绝对要比任何需要PHP参与的缓存系统都要高效.
    那就是利用Nginx实现的fastcgi_cache,比如缓存WordPress:

    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;
    }

    PHP这边只需要实现缓存删除功能:

    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.'//m.sbmmt.com/m/'.substr($md5, -1, 1).'//m.sbmmt.com/m/'.substr($md5, -3, 2).'//m.sbmmt.com/m/'.$md5;
    # 其中substr($md5, -3, 2)的-3表示从字符串$md5倒数第3个位置开始,截取长度为2的字串,也就是b6.
    if (@unlink($cache)) {
        echo '清除缓存成功。';
    } else {
        echo '清除缓存失败。';
    }

    回复
    0
  • PHP中文网

    PHP中文网2017-04-11 10:41:25

    当然是可以的,但是要注意输出静态缓存的时间,如果显示静态缓存和渲染动态页面输出之前,所经过的程序代码都是一样多的,那对页面加载速度的提升自然是不多的。

    回复
    0
  • 取消回复发送