如何理解Nginx + PHP缓存

介绍

本篇内容主要讲解”如何理解Nginx + PHP缓存”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习”如何理解Nginx + PHP缓存”吧!

<强> nginx有两种缓存机制:fastcgi_cache和proxy_cache
<强>下面我们来说说这两种缓存机制的区别吧
proxy_cache 作用是缓存后端服务器的内容,可能是任何内容,包括静态的和动态的
<强> fastcgi_cache 作用是缓存fastcgi生成的内容,很多情况是php生成的动态内容
<强> proxy_cache 缓存减少了nginx与后端通信的次数,节省了传输时间和后端带宽
<强> fastcgi_cache 缓存减少了nginx与php的通信次数,更减轻了php和数据库的压力。
<强> proxy_cache 缓存设置

代码如下:

#注:proxy_temp_path和proxy_cache_path指定的路径必须在同一分区
proxy_temp_path/data0/proxy_temp_dir;
#设置网络缓存区名称为cache_one,内存缓存空间大小为200 mb, 1天没有被访问的内容自动清除,硬盘缓存空间大小为30 gb。
proxy_cache_path/data0 proxy_cache_dir水平=1:2 keys_zone=cache_one: 200活动=1 d max_size=30克;
服务器
{
听80;
server_name www.yourdomain.com 192.168.8.42;
指数指数。html你;
根/data0/根/www;位置
/
{
#如果后端的服务器返回502504年,执行超时等错误,自动将请求转发到上游负载均衡池中的另一台服务器,实现故障转移。
proxy_next_upstream http_502 http_504错误超时invalid_header;
proxy_cache cache_one;
#对不同的HTTP状态码设置不同的缓存时间
proxy_cache_valid 200 304 12 h;
#以域名,URI,参数组合成Web缓存的关键值,Nginx根据关键值哈希,存储缓存内容到二级缓存目录内
proxy_cache_key主机URI is_args args美元美元。
proxy_set_header主机主机美元;
proxy_set_header X-Forwarded-For remote_addr美元;http://backend_server
proxy_pass;
到期后1 d;
}
#用于清除缓存,假设一个URL为http://192.168.8.42/test.txt,通过访问http://192.168.8.42/purge/test。txt就可以清除该URL的缓存。
位置~/清洗(/. *)
{
#设置只允许指定的IP或IP段才可以清除URL缓存。
允许127.0.0.1;
允许192.168.0.0/16;
否认;
proxy_cache_purge cache_one主机1美元is_args args美元;
}
#扩展名以. php、jsp,。cgi结尾的动态应用程序不缓存。~ . * \
位置。(php jsp | | cgi) ?$
{
proxy_set_header主机主机美元;
proxy_set_header X-Forwarded-For remote_addr美元;http://backend_server
proxy_pass;
}
access_log;
}
}


fastcgi_cache缓存设置

代码如下:

#定义缓存存放的文件夹
fastcgi_cache_path/tt/缓存级别=1:2 keys_zone=名字:2880活动=2 d max_size=10 g;
#定义缓存不同的网址请求
fastcgi_cache_key“美元计划request_method主机uri arg_filename美元美元arg_x arg_y"美元;;
服务器{
听8080;
server_name www.example com;
位置/{
根/www;
指数指数。html索引。htm index . php,
}
位置~ (| . php) $ {
根/www;
fastcgi_pass 127.0.0.1:9000;
fastcgi_cache名称;
fastcgi_cache_valid 200 48小时;
fastcgi_cache_min_uses 1;
fastcgi_cache_use_stale错误超时invalid_header http_500;
fastcgi_index index . php,
fastcgi_param SCRIPT_FILENAME/脚本fastcgi_script_name美元;
包括fastcgi.conf;
#设置缓存的过程中发现无法获取饼干,经查需要定义这句话
fastcgi_pass_header set - cookie;
}
log_format访问& # 39;remote_addr - remote_user美元($ time_local]“request"美元;& # 39;
& # 39;地位body_bytes_sent美元“http_referer"美元;& # 39;
& # 39;“http_user_agent"美元;http_x_forwarded_for& # 39;美元;
access_log httplogs/访问。日志访问;
}


总的来说nginx的proxy_cache和fastcgi_cache的缓存配置差不多。
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
<强> 在讨论memcache缓存之前,我们先了解下mysql的内存缓存吧
<强> mysql的内存缓存可以中在my . cnf中所做指定大小:内存表和临时表不同,临时表也是存放内存中,临时表最大的内存需要通过tmp_table_size=128设定。当数据查过临时表的最大值设定时,自动转为磁盘表,此时因需要进行IO操作,性能会大大下降,而内存表不会,内存满了后,会提示数据满错误。
例:

代码如下:

创建表测试
(
id int unsigned not null auto_increment主键

如何理解Nginx + PHP缓存