在开始之前我们先要了解nginx的缓存原理:
缓存技术的基本思想: 对用户已经访问过的内容在Nginx建立副本,如果在一段时间内(缓存尚未过期)再次访问该数据,则不需要重新发起请求获取数据,可以直接从缓存中读取到该数据。
缓存的好处在于减少了Nginx与后端服务之间的网络交互,减轻了网络的压力,在减少数据传输的延迟时同时可以提升用户访问速度。
而且如果后端服务出现异常时,还可以通过缓存进行相应用户请求,提高了后端服务的稳定性。
什么是Nginx缓存?
Nginx基于Proxy Store实现,使用Nginx的http_proxy模块可以实现类似于squid的缓存功能。
当启用缓存时,Nginx会将相应数据保存在磁盘缓存中,只要缓存数据尚未过期,就会使用缓存数据来响应客户端的请求。
如何启用缓存?
Nginx启用缓存需要在最顶层的http节点下配置proxycachepath命令。
proxy_cache_path /data/cache keys_zone=niyueling:10m;
proxycachepath命令一共包含两个参数
第一个参数指定缓存保存的本地路径
第二个参数定义缓存数据的共享内存区域的名称和内存区大小
Nginx启动后,缓存加载程序只进行加载一次,加载时会将缓存的元数据加载到共享内存区域,但是如果一次加载整个缓存全部内容可能会使Nginx刚启动的前几分钟性能消耗严重,大幅度降低Nginx的性能。
传统缓存策略:
高速缓存:
一. php添加memcache功能模块
在.bash_profile文件添加文件路径:
测试php服务是否正常:
配置memcache服务:
编译:
连接php与memcache服务:
在php.ini文件里配置:
已经配置成功:
配置nginx服务:
访问网址:
会从缓存中取数据
服务配置成功!!
再次访问memcache网址:
从上图可以看到处理的信息只有75%
执行:
ab -c20 -n 1000 http://172.25.2.1/example.php
优化
再次刷新网页:
处理量100%
二. 基于openresty(构建高效透明的缓存机制) 访问
基于openresty(构建高效透明的缓存机制) 访问,能将缓存放在nginx中,速度更快
安装并配置openrestry
需要切换,关闭之前的nginx访问模式:
配置nginx.conf文件:
重启nginx服务:
配置该文件:
从下图可以清楚的看出传输量大幅度提升: