nginx缓存静态资源,只需几个配置提升10倍页面加载速度
nginx缓存静态资源,只需几个配置提升10倍页面加载速度
首先我们看图说话
这是在没有缓存的情况下,这个页面发送了很多静态资源的请求:
可以看到,静态资源占用了整个页面加载用时的90%以上,而且这个静态资源还是已经在我使用了nginx配置压缩以后的大小,如果没有对这些静态资源压缩的话,那么静态资源加载应该会占用这个页面展示99%以上的时间。听起来是不是已经被吓到了,但是数据已经摆在这里了,这可不是危言耸听。
然后再看看使用了nginx缓存之后的效果图:
看到没有,朋友们,整个页面只有请求接口的时间和从本地磁盘加载css的时间。页面加载速度直接提升10倍以上!并且由于我这个页面没有采用前后端分离的方式,所以html没有缓存下来,如果采用了前后端分离架构的话,就连html都可以直接缓存,那提升的速度可想而知。当然由于浏览器或者手机端对页面加载的优化我们并不能很直观的感受到10倍的提升,实际上以肉眼观察的话,差不多减少了一半的时间,并且由于并没有向后端服务器请求这些静态资源,也相当于对后端服务器做了一层保护措施。
首先在http
模块加配置:
# 开启gzip
gzip on;
# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;
# gzip 压缩级别,-,数字越大压缩的越好,也越占用CPU时间。一般设置1和2
gzip_comp_level ;
# 进行压缩的文件类型。javascript有多种形式。其中的值可以在 mime.types 文件中找到。
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;
# 是否在http header中添加Vary: Accept-Encoding,建议开启
gzip_vary on;
# 禁用IE gzip
gzip_disable "MSIE [1-6]\.";
# 设置缓存路径并且使用一块最大100M的共享内存,用于硬盘上的文件索引,包括文件名和请求次数,每个文件在1天内若不活跃(无请求)则从硬盘上淘汰,硬盘缓存最大10G,满了则根据LRU算法自动清除缓存。
proxy_cache_path /var/cache/nginx/cache levels=: keys_zone=imgcache:100m inactive=1d max_size=10g;
关于模块以及nginx配置信息在上一篇文章有说明。
可以看到在http
模块中主要是使用gzip
压缩,最后一个配置才是和缓存有关的配置。
然后是server
中加上location
配置
location ~* ^.+\.(css|js|ico|gif|jpg|jpeg|png)$ {
log_not_found off;
# 关闭日志
access_log off;
# 缓存时间7天
expires 7d;
# 源服务器
proxy_pass http://localhost:8888;
# 指定上面设置的缓存区域
proxy_cache imgcache;
# 缓存过期管理
proxy_cache_valid 1d;
proxy_cache_valid 10m;
proxy_cache_valid any 1h;
proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
}
加上这两块配置之后,就能享受到缓存给你带来的快乐了。当然系统优化之路还是相当漫长的,nginx缓存只是其中的一块而已,想要把系统达到完美还需要在很多地方下功夫,比如这些静态资源完全可以直接在客户端缓存,这样连请求都不会往服务端发了,更大的减轻服务器的压力。
nginx缓存静态资源,只需几个配置提升10倍页面加载速度的更多相关文章
- Nginx开启Gzip压缩提升页面加载速度
1.在 nginx 的conf 目录下新建 gzip.conf 文件 #开启gzip压缩 gzip on; #设置允许压缩的页面最小字节数 gzip_min_length 1k; #申请4个单位为16 ...
- Nginx开启Gzip压缩提高页面加载速度
本文转自http://www.veryhuo.com/a/view/51706.html,如有侵权,请及时联系转载人删除! 在实际运维中,为了提高web页面的访问加载速度,一般会把静态资源(比如js. ...
- Nginx性能优化功能- Gzip压缩(大幅度提高页面加载速度)
Nginx开启Gzip压缩功能, 可以使网站的css.js .xml.html 文件在传输时进行压缩,提高访问速度, 进而优化Nginx性能! Web网站上的图片,视频等其它多媒体文件以及大文件,因 ...
- Nginx开启Gzip压缩大幅提高页面加载速度(转)
转自:http://www.cnblogs.com/mitang/p/4477220.html 刚刚给博客加了一个500px相册插件,lightbox引入了很多js文件和css文件,页面一下子看起来非 ...
- 页面资源预加载(Link prefetch)功能加速你的页面加载速度
有了浏览器缓存,为何还需要预加载? 用户可能是第一次访问网站,此时还无缓存 用户可能清空了缓存 缓存可能已经过期,资源将重新加载 用户访问的缓存文件可能不是最新的,需要重新加载 页面资源预加载/预读取 ...
- 使用HTML5的页面资源预加载(Link prefetch)功能加速你的页面加载速度
不管是浏览器的开发者还是普通web应用的开发者,他们都在做一个共同的努力:让Web浏览有更快的速度感觉.有很多已知的技术都可以让你的网站速度变得更快:使用CSS sprites,使用图片优化工具,使用 ...
- Nginx开启gzip提高页面加载速度
今天发现页面多次请求数据且加载的数据大,需要等待的时间很长 记得Nginx有gzip,可以对数据进行压缩 gzip是nginx服务器的ngx_http_gzip_module模块提供的在线实时数据压缩 ...
- Nginx开启Gzip压缩大幅提高页面加载速度
[root@12 conf]# vi nginx.conf gzip on;#开启GZIP gzip_min_length 1k; #不压缩临界值,大于1K的才压缩,一般不用改 gzip_buffer ...
- Nginx作为静态资源web服务之文件读取
Nginx作为静态资源web服务之文件读取 文件读取会使用到以下几个配置 1. sendfile 使用nginx作为静态资源服务时,通过配置sendfile可以有效提高文件读取效率,设置为on表示启动 ...
随机推荐
- Java Automic包下的AtomicInteger
感谢这两位博主的文章,文章源于: https://www.cnblogs.com/chenpi/p/5375805.html https://blog.csdn.net/fanrenxiang/art ...
- 数据库xp_cmdshell使用
首先也开启组件. sp_configure reconfigure go sp_configure reconfigure go 删除本地文件,注意是删除数据库所在的服务器的本地文件. exec ma ...
- 基于vue+springboot+docker网站搭建【三】安装docker
安装docker 我们整个工程都会基于docker来跑,因此首先安装docker.在安装所有软件之前,我们需要先下载一个下载工具. 1.下载工具安装 yum-utils yum install -y ...
- Flask简介及使用
目录 Flask简介 wsgiref wsgiref简单应用 两个依赖 werkzeug Jinja2 简单使用 安装 flask快速使用 Django与Flask返回值的对比 Flask简介 F ...
- Logstash——multiline 插件,匹配多行日志
本文内容 测试数据 字段属性 按多行解析运行时日志 把多行日志解析到字段 参考资料 在处理日志时,除了访问日志外,还要处理运行时日志,该日志大都用程序写的,比如 log4j.运行时日志跟访问日志最大的 ...
- 关于IOS AFNetWorking内存泄漏的问题
之前项目中用Instruments的leaks检测APP,结果发现APP的网络请求会出现内存泄漏,暂时我先使用单例的方式暂时解决了内存泄漏的原因,但是我还没有找打根本原因.希望有研究的小伙伴可以相互探 ...
- wait waitpid
定义 pid_t wait(int *status); pid_t waitpid(pid_t pid, int *status, int options); 暂时停止进程的执行,直到有信号来到或子进 ...
- 微信小程序开发--flex详细解读
一.结构:flex布局 是由一个大的容器加上多个子元素组成. <view class="container"> <view </view> <v ...
- WorkFlow三:CLASS事件触发工作流
1.创建关键字段结构.这里没有新建,使用前面创建的结构: 2.SE24创建类:保存激活. 3.接口里添加IF_WORKFLOW并激活.(其他两个激活就出现了,不用管) 4.在属性页签中定义两个属性,其 ...
- SpringBoot集成JWT
JWT(json web tokens)是目前比较流行的跨域认证解决方案:说通俗点就是比较流行的token生成和校验的方案.碰巧公司有个app的项目的token采用了jwt方案,因此记录下后端 ...