缓存介绍
页面打开速度
1、服务器宽带
2、服务器响应速度
加机器,集群
3、传输距离
在不同区域放置缓存服务器
4、网络延迟
中国运营商:联通、电信、铁通(移动) 、 教育网
廉价方案
1、加缓存服务器
把80%的数据放在缓存服务器
2、CDN 服务商
租用他们在全国各地的cdn服务器
智能CDN : 根据用户的ip , 判断用户所在区域,然后直接在当地的CDN服务器获取资源
缓存服务器: squid 、nginx 、 varnish
nginx 缓存服务部署
缓存服务器配置
镜像服务器配置
一、缓存部署
# nginx 源码包
[root@web01 ~]# wget http://nginx.org/download/nginx-1.15.8.tar.gz
# nginx 缓存模块
[root@web01 ~]# wget http://labs.frickle.com/files/ngx_cache_purge-2.3.tar.gz
# 新建 nginx 管理账号
[root@web01 ~]# useradd -r www -s /sbin/nologin
# nginx 安装---解压源码包
[root@web01 ~]# tar xf nginx-1.15.8.tar.gz
[root@web01 ~]# tar xf ngx_cache_purge-2.3.tar.gz
# nginx 安装---安装依赖
[root@web01 ~]# yum -y install gcc pcre-* zlib zlib-devel openssl-*
# nginx 安装---配置 nginx
[root@web01 ~]# cd nginx-1.15.8
[root@web01 nginx-1.15.8]# ./configure --prefix=/usr/local/nginx --user=www --group=www --add-module=../ngx_cache_purge-2.3 --with-http_stub_status_module
# nginx 安装---编译
[root@web01 nginx-1.15.8]# make -j4
# nginx 安装---安装
[root@web01 nginx-1.15.8]# make install
修改nginx 的用户和组
[root@iZowj local]# chown www.www nginx -R
开启缓存
缓存部署
实现方式:
nginx 反向代理+缓存机制
nginx 配置文件
新建缓存目录
[root@web01 ~]# mkdir -p /cache/proxy_temp_dir
开启缓存
如下缓存策略适合缓存小文件(小于1M)
在 http 配置中添加
# 1)设置缓存临时路径
proxy_temp_path /cache/proxy_temp_dir;
# 2)缓存路径及配置
proxy_cache_path /cache/proxy_dir levels=1:2 keys_zone=cache0:10m inactive=1d max_size=30g;
# 注释
#levels=1:2 缓存目录分为两级 第一级文件夹命名用一个字母 第二级文件夹用两个字母命名,最多三级。
#keys_zone=cache0:10m 内存缓存区域 10M 名字为 cache0。在共享内存中设置一块存储区域来存放缓存的 key 和 metadata,这样 nginx 可以快速判断一个request 是否命中或者未命中缓存,1m 可以存储 8000 个 key,10m 可以存储80000 个 key
#inactive=1d 有效期为 1 天,如果缓存内容在一天中没人访问则被删除
#max_size=30g 硬盘空间中的 30G 做磁盘缓存,如果不指定,会使用掉所有disk space,当达到配额后,会删除最少使用的 cache 文件
缓存策略
在server 模块中添加如下
location / {
proxy_pass http://www.ayitula.com;
proxy_cache cache0;
proxy_cache_valid 200 304 30m;
proxy_cache_valid any 1m;
proxy_cache_key $host$uri$is_args$args;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
expires 60m;
}
注释:
proxy_pass http://www.ayitula.com;: 要代理的网站(缓存的网站)
proxy_cache cache0 : 使用的代理缓存名称 和 上面的缓存名称 对应
proxy_cache_valid 200 304 30m : 缓存策略,对返回200 , 304 这样的数据进行缓存 30分钟
proxy_cache_valid any 1m : 其他返回的状态码的 , 都缓存1分钟
proxy_cache_key $host$uri$is_args$args : 根据host uri 参数(即完整URL) 生成缓存的key
proxy_set_header Host $host : 设置响应头
proxy_set_header X-Forwarded-For $remote_addr;
expires 60m :开启客户端浏览器缓存 60分钟
访问某一个资源文件,看看是否走缓存服务
curl -I http://xxx/logo.png
清空 URL
location ~/purge(/.*){
allow 127.0.0.1;
allow 192.168.11.0/24;
proxy_cache_purge cache0 $host$1$is_args$args;
}
要删除某个资源, 直接在资源和主机之间加一个/purge 即可。
镜像服务器配置
这种是缓存大文件(大于1M的文件)
root /usr/local/nginx/html;
index index.html index.php;
proxy_store on; #开启镜像服务
proxy_store_access user:rw group:rw all:r; #缓存本地存储文件的权限
proxy_temp_path /usr/local/nginx/html/temp; #本地临时缓存目录
#判断本地目录中是否有文件,没有就去取源
if ( !-e $request_filename ) {
proxy_pass http://www.runoob.com;
}
网友评论