开启缓存可以提高网站性能, 减轻频繁访问数据, 而给数据库带来的压力
合理的缓存, 还会减轻程序运算时, 对 CPU 带来的压力
http 缓存设置 -- 浏览器访问 Nginx, 浏览器会 Cache
nginx 代理层缓存 --Nginx 访问后端, Nginx 自己 Cache
1.http 缓存设置
Nginx 提供了 expires,etag,if-modified-since 指令来实现浏览器缓存控制
expires 让用户访问一次后, 将数据缓存在用户的浏览器中
expires 的配置
- upstream Node.JS {
- server 127.0.0.1:3002;
- }
- server {
- listen 3001;
- server_name 127.0.0.1;
- location / {
- proxy_pass http://Node.JS;
- gzip on;
- gzip_min_length 1k;
- gzip_buffers 4 16k;
- #gzip_http_version 1.0;
- gzip_comp_level 2;
- gzip_types text/plain application/JavaScript application/x-JavaScript text/CSS application/xml text/JavaScript application/x-httpd-PHP image/jpeg image/gif image/PNG;
- gzip_vary off;
- gzip_disable "MSIE [1-6]\.";
- expires 3m;
- }
- }
开启缓存后第一次请求
以后再请求
2.nginx 代理层缓存
Nginx 实现缓存是通过代理缓存 pxory_cache
常用的设置选项有
(1)proxy_cache_path
定义一个完整的缓存空间, 指定缓存数据的磁盘路径, 索引存放的内存空间以及一些其他参数, 如缓存删除策略
- eg:
- proxy_cache_path /data/cache levels=1:2 keys_zone=Node.JS:10m max_size=1G inactive=10;
说明:
levels: 配置在该目录下再分两层目录, 一层 1 个随机字符作为名称, 二层 2 个随机字符作为名称
levels 最多三层, 每层最多两个字符 (为了加快访问文件的速度)
keys_zone: 用来为这个缓存区起名, 并设置大小
如上指定名为 Node.JS, 供 proxy_cache 引用; 10m 就是内存空间的大小;
max_size: 指定最大缓存数据磁盘空间的大小
inactive: 在 inactive 指定的时间内, 未被访问的缓存数据将从缓存中删除
注:
只能定义在 http 块上下文中
(2)proxy_cache
用来引用上面 proxy_cache_path 定义的缓存空间, 现时打开缓存功能
(3)proxy_cache_valid
设置不同响应代码的缓存时间
- eg:
- http {
- include mime.types;
- default_type application/octet-stream;
- sendfile on;
- keepalive_timeout 65;
- #新建缓存
- proxy_cache_path D:/phpStudy/nginx/data/cache levels=1:2 keys_zone=Node.JS:20M max_size=2G inactive=5;
- #为缓存数据添加头部信息
- add_header my-Cache "$upstream_cache_status form $server_addr";
- upstream Node.JS {
- server 127.0.0.1:3002;
- }
- server {
- listen 3001;
- server_name 127.0.0.1;
- location / {
- proxy_pass http://Node.JS;
- gzip on;
- gzip_min_length 1k;
- gzip_buffers 4 16k;
- #gzip_http_version 1.0;
- gzip_comp_level 2;
- gzip_types text/plain application/JavaScript application/x-JavaScript text/CSS application/xml text/JavaScript application/x-httpd-PHP image/jpeg image/gif image/PNG;
- gzip_vary off;
- gzip_disable "MSIE [1-6]\.";
- #开启缓存
- proxy_cache Node.JS;
- #缓存设置
- proxy_cache_valid 200 301 302 2m;
- proxy_cache_valid any 2m;
- proxy_set_header X-Real-IP $remote_addr;
- proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
- add_header X-Via $server_addr;
- add_header X-Upstream $upstream_addr;
- add_header Nginx-Cache $upstream_cache_status;
- }
- }
- }
来源: http://www.bubuko.com/infodetail-3316798.html