前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Nginx的FastCGI Cache缓存给ZBlogPHP网站提速

使用Nginx的FastCGI Cache缓存给ZBlogPHP网站提速

原创
作者头像
用户1539053
发布2023-07-24 14:20:31
2280
发布2023-07-24 14:20:31
举报
文章被收录于专栏:百妖乐

fastcgi_cache是nginx的一个缓存模块,能够将动态页面(例如:PHP)缓存起来,以便用户下次访问时直接返回

它的原理就是,在用户访问网站时,通过将URL及其相关内容生成key,然后对key用md5算法进行hash计算,最终以配置的参数获得缓存文件路径

开始操作

那么接下来,我就直接上代码(注意:以下代码需要根据你原来的配置文件修改

代码语言:javascript
复制
# 下面这几条语句可以放在nginx.conf供所有站点使用
# /tmp/cache/zblog 缓存目录:填写自己的目录,权限要给777
# levels  可以就这样
# keys_zone  名称:大小,注意:这里的大小指的是,能够存放的key的字节数的大小。
#                    例如:1m=1024*1024字节,就是所有key加起来不能超过这个数
# inactive 缓存文件在一段时间内没有访问则会被删除
#              d - 天、h - 小时、m - 分钟
# max_size 设置缓存的总大小:如果是多个站点,可以设置大一点
fastcgi_cache_path /tmp/cache/zblog levels=1:2 keys_zone=zblog:1m inactive=1d max_size=100m;
fastcgi_temp_path /tmp/cache/zblog/tmp; # 需要与fastcgi_cache_path设置的缓存目录在同一分区
fastcgi_cache_key "$scheme$request_method$host$request_uri"; # 生成缓存key
fastcgi_ignore_headers Cache-Control Expires Set-Cookie; # 如果不加,若php返回这些头,缓存可能会失效
server {
    ...
    # 跳过缓存开关,1为跳过缓存,0为不跳过缓存
    set $skip_cache 0;
    
    # 不缓存后台目录
    if ($request_uri ~* "^/zb_(users|system)") {
      set $skip_cache 1;
    }
    
    # 动态查询不缓存(可选)
    if ($query_string != '') {
      set $skip_cache 1;
    }
    
    # 登录用户不缓存(可选)
    if ($http_cookie ~* "(^|;\s*)username(.*?)=(.*?)(;|$)") {
      set $skip_cache 1;
    }
    
    # 其它选项,请根据自身情况而定
    
    #PHP-INFO-START  PHP引用配置,可以注释或修改
    #include enable-php-72.conf;
    这里应该参考原来的配置。特别是fastcgi_pass参数
    location ~ [^/]\.php(/|$) {
		   try_files $uri =404;
		   fastcgi_pass  unix:/tmp/php-cgi-72.sock;
		   fastcgi_index index.php;
		   include fastcgi.conf;
		   include pathinfo.conf;
		   
		   fastcgi_cache zblog; # 这个地方要填写上面fastcgi_cache_path的keys_zone参数设置的名称

		   # 设置需要的状态码以及缓存时间
		   fastcgi_cache_valid 200 1h;
		   fastcgi_cache_valid 301 302 10m;
		   fastcgi_cache_valid 404 1m;
		  
		   # 用于调试,上线后可以注释掉
		   # MISS为未命中缓存,HIT为命中缓存
		   add_header X-Cache "$upstream_cache_status";
		   
		   fastcgi_cache_bypass $skip_cache;
		   fastcgi_no_cache $skip_cache;
    }
    
    #这个地方是用来清除缓存用的
    location ~ ^/purge(/.*)$ {
      allow 127.0.0.1;
      allow 你的服务器外网ip;
      fastcgi_cache_purge zblog "$scheme$request_method$host$1";
    }

    #PHP-INFO-END
    ...
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 开始操作
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档