关于Nginx fastcgi_cache,基础的可以参看Nginx官方文档 http://wiki.nginx.org/HttpFcgiModule,看不懂英文的可以看这个http://wiki.nginx.org/NginxChsHttpFcgiModule。 下面是一个典型的做法是: 全局定义一个缓存空间,配置文件名为,fastcgi_cache.conf [text]fastcgi_temp_path /data/ngx_fcgi_tmp; fastcgi_cache_path /data/cache/fastcgi levels=2:2 keys_zone=cache_php:512m inactive=1d max_size=1g; fastcgi_cache_valid 200 301 302 1d; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_cache_key http://$host$request_uri;[/text] 然后在vhost配置里面加上:[text]fastcgi_cache ngx_fcgi_cache; include fastcgi.conf;[/text] 大概解释下各个参数的含义: fastcgi_temp_path:生成fastcgi_cache临时文件目录 fastcgi_cache_path:fastcgi_cache缓存目录,可以设置目录哈希层级,比如2:2会生成256*256个字目录,keys_zone是这个缓存空间的名字,cache是用多少内存(这样热门的内容nginx直接放内存,提高访问速度),inactive表示默认失效时间,max_size表示最多用多少硬盘空间,需要注意的是fastcgi_cache缓存是先写在fastcgi_temp_path再移到fastcgi_cache_path,所以这两个目录最好在同一个分区,从0.8.9之后可以在不同的分区,不过还是建议放同一分区。 fastcgi_cache_valid:定义哪些http头要缓存 fastcgi_cache_use_stale:定义哪些情况下用过期缓存 fastcgi_cache_key:定义fastcgi_cache的key,示例中就以请求的URI作为缓存的key,Nginx会取这个key的md5作为缓存文件,如果设置了缓存哈希目录,Nginx会从后往前取相应的位数做为目录。 fastcgi_cache:用哪个缓存空间 这样就可以了,基本上可以work,但还没完,如何手动清除缓存?有个Nginx的第三方扩展可帮你做到: https://github.com/FRiCKLE/ngx_cache_purge/,如果对大多数第三方扩展无爱,写个清除的脚本也非常简单,以PHP为例:[php]<?php function purgeCache() {     $url = $this->post('url');       if (empty($url) || !Cola_Com_Validate::url($url)) {         exit('请输入正确的URL。');     }       $md5 = md5($url);     $cacheFile = $this->_cacheRoot . '/' . substr($md5, -2, 2) . '/' . substr($md5, -4, 2) . '/' . $md5;       if (!file_exists($cacheFile)) {         exit('缓存不存在。');     }       if (@unlink($cacheFile)) {         echo '清除缓存成功。';     } else {         echo '清除缓存失败。';     } } [/php] 核心是第11行,直接找到缓存文件,然后删掉就可以,这个脚本有个副作用,手动清除之后,缓存失效,但Nginx后面还会自己清除一遍,然后报个unlink失败的日志,不过无关紧要了。 如果只想在某些页面用fastcgi_cache,有两种方法,一是在location中定义fastcgi_cache,这样只有满足一定规则的url才会用上cache,其他的就不会了;另外一种方法是在你不需要缓存的页面上,输出禁止缓存的头信息,用ColaPHP的话,直接$this->response->disableBrowserCache(); 具体代码:[php gutter="false"]header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Cache-Control: no-store, no-cache, must-revalidate"); header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache");[/php] 如果页面中只有一小部分内容不可以缓存,可以用Nginx fastcgi_cache吗?比如某个内容页,大部分内容可以缓存,但希望把用户的登录信息更新上去。答案是肯定的,可以直接输出用户未登录的页面样式,等页面加载完毕之后,通过ajax异步更新用户信息:[php gutter="false"]$().ready(function() {     initUser(); })[/php]

转载于:https://www.cnblogs.com/Robyte/archive/2011/01/13/2591282.html

使用fastcgi_cache加速Nginx相关推荐

  1. ngx_pagespeed加速nginx

    2019独角兽企业重金招聘Python工程师标准>>> google有对apache优化的mod_pagespeed,nginx的优化工具ngx_pagespeed ngx_page ...

  2. nginx不缓存html页面耗性能,加速nginx性能: 开启gzip和缓存

    开启gzip 配置 # 开启gzip gzip on; # 启用gzip压缩的最小文件,小于设置值的文件将不会压缩 gzip_min_length 1k; # gzip 压缩级别,1-10,数字越大压 ...

  3. 加速 Nginx 响应的 5 个措施

    核心内容主要是通过修改 Nginx 配置文件来进行调优的! 海军上将威廉·麦克拉文在 2014 年于德克萨斯大学发表的著名演讲中说,如果你想改变世界,就从铺床开始吧!有时,一些很小的事情可能会产生很大 ...

  4. 加速 Nginx 响应的 5 个措施!赶紧用…

    核心内容主要是通过修改 Nginx 配置文件来进行调优的! 海军上将威廉·麦克拉文在 2014 年于德克萨斯大学发表的著名演讲中说,如果你想改变世界,就从铺床开始吧!有时,一些很小的事情可能会产生很大 ...

  5. Nginx使用Expires增加浏览器缓存加速(转)

    转载自:Nginx使用Expires增加浏览器缓存加速 Nginx可以更改HTTP头部,这个是Web服务器必须的,当然Nginx更可以支持在HTTP头部中添加Expires等相关信息,增强浏览器缓存, ...

  6. 使用 nginx 做加速

    使用 nginx 做加速 nginx 一般做反向代理服务器.并且可以代理到任何可以访问的节点上. 例如我们发现某个 restful 的 api 网站,国内访问速度不佳,我们可以借助一台境外节点上的ng ...

  7. 26.Nginx详解

    文章目录 一 Web服务基础介绍: 1.1 互联网发展历程回顾: 1.2:web服务介绍: 1.2.1 Apace-早期的web服务端: 1.2.1.3:Apache event模型 1.2.2 Ng ...

  8. nginx学习--nginx下的gzip与vary、预压缩、缓存、反向代理的结合

    2019独角兽企业重金招聘Python工程师标准>>> 来自:nginx系列(十七)nginx下的gzip与vary.预压缩.缓存.反向代理的结合 介绍 在http的协议里,为了减少 ...

  9. nginx系列(十七)nginx下的gzip与vary、预压缩、缓存、反向代理的结合

    前言  在http的协议里,为了减少网络传输,允许将报文进行gzip压缩以后再传输.虽然网络传输体积减小了,但是服务器压缩和浏览器的解压缩消耗了CPU的计算. 后来出现了预压缩技术,就是提前把静态文件 ...

  10. 为什么BFE可以取代Nginx

    BFE是基于Go语言编写的七层负载均衡开源软件,诞生于2014年.2020年6月,BFE被CNCF(Cloud Native Computing Foundation,云原生计算基金会)接受为&quo ...

最新文章

  1. 2021年用于图像处理的Python顶级库
  2. 是什么给了150万开发者拥抱深度学习的底气?
  3. 产品复盘 | 字节跳动-飞书团队工作1年收获
  4. 19.7 主动模式和被动模式 19.8 添加监控主机 19.9 添加自定义模板 19.10 处理图形中的乱码 19.11 自动发现...
  5. C 实现 删除字符串空白符的函数 strtrim
  6. python获取小王的ip地址_用Python获取本机的IP地址
  7. UIAlertControl的使用对比与UIAlertView和UIActionSheet
  8. php冒泡排序的用途,浅谈php冒泡排序
  9. 网页防篡改系统的使用体验
  10. 流量分析的瑞士军刀:Zeek
  11. 中国各地区工业COD排放量面板数据(1998-2017年)
  12. 网口压线顺序_网线怎么接头 网线水晶头的接法和排序
  13. 主板BIOS中的CSM是什么
  14. HDLCoder的系统设计
  15. 个人认为比较有意思的文章
  16. android 12以上改变应用最大32进程限制方法
  17. C# Winfrom 右键菜单
  18. 201871010133 赵永军《面向对象程序设计(java)》第六、七周学习总结
  19. 渗透测试-干货 | 80篇+网络安全面试经验帖(面试篇)
  20. c语言万年历报错系统,用c语言写万年历应该怎样写?

热门文章

  1. android内存泄露问题分析,内存泄露实例分析 -- Android内存优化第四弹
  2. glmark2移植到嵌入式Linux,嵌入式中移植基于Framebuffer的LittlevGL
  3. java皮卡丘代码_Picachu代码源代码,皮卡丘,源码
  4. 在 ML2 中配置 VXLAN - 每天5分钟玩转 OpenStack(110)
  5. html5 figure 标签
  6. 当你拥有足够的经验时,自然就会想到的东西---面向对象的设计原则!
  7. 用python的turtle库画圣诞树
  8. guava 的重试机制 guava-retrying 使用
  9. Java使用Cipher类实现加密,包括DES,DES3,AES和RSA加密
  10. kafka-client 版本兼容问题