前言 Nginx是高性能的HTTP服务器,通过Proxy Cache可以使其对静态资源进行缓存。其原理就是把静态资源按照一定的规则存在本地硬盘,并且会在内存中缓存常用的资源,从而加快静态资源的响应。 配置Proxy Cache 以下为nginx配置片段: proxy_temp_path /usr/lo

前言

Nginx是高性能的HTTP服务器,通过Proxy Cache可以使其对静态资源进行缓存。其原理就是把静态资源按照一定的规则存在本地硬盘,并且会在内存中缓存常用的资源,从而加快静态资源的响应。

配置Proxy Cache

以下为nginx配置片段:

proxy_temp_path /usr/local/nginx/proxy_temp_dir 1 2;

#keys_zone=cache1:100m 表示这个zone名称为cache1,分配的内存大小为100MB

#/usr/local/nginx/proxy_cache_dir/cache1 表示cache1这个zone的文件要存放的目录

#levels=1:2 表示缓存目录的第一级目录是1个字符,第二级目录是2个字符,即/usr/local/nginx/proxy_cache_dir/cache1/a/1b这种形式

#inactive=1d 表示这个zone中的缓存文件如果在1天内都没有被访问,那么文件会被cache manager进程删除掉

#max_size=10g 表示这个zone的硬盘容量为10GB

proxy_cache_path /usr/local/nginx/proxy_cache_dir/cache1 levels=1:2 keys_zone=cache1:100m inactive=1d max_size=10g;

server {

listen 80;

server_name *.example.com;

#在日志格式中加入$upstream_cache_status

log_format format1 '$remote_addr - $remote_user [$time_local] '

'"$request" $status $body_bytes_sent '

'"$http_referer" "$http_user_agent" $upstream_cache_status';

access_log log/access.log fomat1;

#$upstream_cache_status表示资源缓存的状态,有HIT MISS EXPIRED三种状态

add_header X-Cache $upstream_cache_status;

location ~ .(jpg|png|gif|css|js)$ {

proxy_pass http://127.0.0.1:81;

#设置资源缓存的zone

proxy_cache cache1;

#设置缓存的key

proxy_cache_key $host$uri$is_args$args;

#设置状态码为200和304的响应可以进行缓存,并且缓存时间为10分钟

proxy_cache_valid 200 304 10m;

expires 30d;

}

}

安装Purge模块

Purge模块被用来清除缓存

$ wget http://labs.frickle.com/files/ngx_cache_purge-1.2.tar.gz

$ tar -zxvf ngx_cache_purge-1.2.tar.gz

查看编译参数

$ /usr/local/nginx/sbin/nginx -V

在原有的编译参数后面加上--add-module=/usr/local/ngx_cache_purge-1.2

$ ./configure --user=www --group=www --prefix=/usr/local/nginx \

--with-http_stub_status_module --with-http_ssl_module \

--with-http_realip_module --add-module=/usr/local/ngx_cache_purge-1.2

$ make && make install

退出nginx,并重新启动

$ /usr/local/nginx/sbin/nginx -s quit

$ /usr/local/nginx/sbin/nginx

配置Purge

以下是nginx中的Purge配置片段

location ~ /purge(/.*) {

#允许的IP

allow 127.0.0.1;

deny all;

proxy_cache_purge cache1 $host$1$is_args$args;

}

清除缓存

使用方式:

$ wget http://example.com/purge/uri

其中uri为静态资源的URI,如果缓存的资源的URL为

http://example.com/js/jquery.js,那么访问

http://example.com/purge/js/jquery.js则会清除缓存。

命中率

保存如下代码为hit_rate.sh:

#!/bin/bash

# author: Jeremy Wei # proxy_cache hit rate

if [ $1x != x ] then

if [ -e $1 ] then

HIT=`cat $1 | grep HIT | wc -l`

ALL=`cat $1 | wc -l`

Hit_rate=`echo "scale=2;($HIT/$ALL)*100" | bc`

echo "Hit rate=$Hit_rate%"

else

echo "$1 not exsist!"

fi

else

echo "usage: ./hit_rate.sh file_path"

fi

使用方式

$ ./hit_rate.sh /usr/local/nginx/log/access.log

参考:

http://wiki.nginx.org/HttpProxyModule

ngnix mysql 缓存清除_利用Proxy Cache使Nginx对静态资源进行缓存相关推荐

  1. 成功解决 Nginx更新静态资源无效 ,Nginx静态资源更新不及时,Nginx清除缓存

    文章目录 问题描述 问题解决 问题复现 正常情况 问题描述 使用 nginx做动静分离,在将服务器中的静态资源修改后,访问页面,发现页面没有及时更新. 问题解决 我这里是清除了浏览器缓存. 有关ngi ...

  2. webpack打包缓存_【第835期】Webpack 的静态资源持久缓存

    原标题:[第835期]Webpack 的静态资源持久缓存 前言 你现在还在休假吗?早读课节前以web pack漫谈结尾,今年就以web pack开始吧.今日早读文章由众成翻译@yanni4night带 ...

  3. 【Egg】静态资源及缓存设置

    egg 静态资源及缓存设置 egg 默认自动继承静态资源配置,在public文件夹 通过 egg-static链接: https://github.com/eggjs/egg-static模块实现. ...

  4. nginx配置静态资源,重新发布后,浏览器缓存导致异常原因和解决

    原因: nginx作为静态资源服务器,重新构建后发生浏览器页面直接取缓存中的js等文件名,但是由于服务器中文件已经被替换导致出现异常. 浏览器在下次请求这个资源的时候不会将请求发向后端,而是直接从缓存 ...

  5. nginx 发布前端资源的缓存方案

    nginx 发布前端资源的缓存方案 前言 对于前端开发者来说,最头疼的事情莫过于.当你兴冲冲的给项目打包以后,上传到 nginx 等静态资源服务器发布以后,自己本地验证没问题,以为万事大吉,结果测试人 ...

  6. nginx搭建静态文件服务器,利用nginx搭建静态资源服务器的方法步骤

    以windows为例,linux其实一样: 搭建静态资源服务器 我电脑上的work文件夹下面有很多图片,我想通过nginx搭建静态资源服务器,通过在地址栏输入ip+port的方式完成目录的映射 找到n ...

  7. nginx 配置静态资源缓存。解决web静态资源访问过慢

    Nginx文件结构 1.全局块:配置影响nginx全局的指令.一般有运行nginx服务器的用户组,nginx进程pid存放路径,日志存放路径,配置文件引入,允许生成worker process数等. ...

  8. Nginx的静态资源缓存以及压缩

    Nginx是一款轻量级的网页服务器.反向代理器以及电子邮件代理服务器.Nginx采用的是异步非阻塞的通信机制(epoll模型),支持更大的并发连接.所谓的epoll模型:当事件没有准备好时,就放入ep ...

  9. nginx 配置静态文件目录_nginx缓存静态资源,只需几个配置提升10倍页面加载速度...

    nginx缓存静态资源,只需几个配置提升10倍页面加载速度 首先我们看图说话 这是在没有缓存的情况下,这个页面发送了很多静态资源的请求: 可以看到,静态资源占用了整个页面加载用时的90%以上,而且这个 ...

最新文章

  1. C#转换人民币大写金额
  2. 进阶学习(3.1) Simple Factory Pattern 简单工厂模式
  3. duilib控件的一些属性
  4. supesite 相关 修改
  5. 不得不服!腾讯优图联合腾讯会议正式上线神奇的眼神接触功能
  6. 自动生成mybatis代码
  7. abaqus6.14安装教程 如何设置中文
  8. python 根据身份证号计算年龄和性别_根据身份证自动计算出生日期、年龄、性别的例子...
  9. 朱晔的互联网架构实践心得S2E1:业务代码究竟难不难写?
  10. 交通肇事逃逸会受到什么处罚
  11. jquery插件--浮动广告
  12. 我们写的代码是如何一步步变成可执行程序(.EXE)的?
  13. 苹果iPhone14频繁自动重启是什么原因?如何修复这个问题?
  14. 低照度图像 颜色恢复 matlab,低照度图像修复方法总结
  15. 系统集成项目管理工程师英语词汇
  16. 100多个常用的Python函数!(部分函数含代码解读)
  17. 用AW国际版激活国行moto二代
  18. 【品牌专场】跨越 X 突破,音视频聚力新机遇
  19. 小程序的老祖宗PWA为什么没有火起来?
  20. 极客学院mysql教程_干货分享 速成必备视频 六天带你玩转MySQL视频教程 数据库......

热门文章

  1. PLSQL_解析过程及硬解析和软解析的区别(案例)
  2. 我想问一下为什么会开3分钟系统自动会从新启动呢?
  3. 人工智能数学基础----导数
  4. C语言实现链式栈(LinkStack)
  5. Duktape:一个新的小巧的超精简可嵌入式JavaScript引擎
  6. 2016百度之星 - 初赛(Astar Round2B)解题报告
  7. PMBOK项目管理PMI主义\IPMA概述
  8. android 如何解决scrollTo无法执行
  9. 使用 html 标签嵌入Silverlight程序的一点小问题
  10. 介绍十种数据恢复的软件工具