前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >nginx缓存静态资源,只需几个配置提升10倍页面加载速度

nginx缓存静态资源,只需几个配置提升10倍页面加载速度

作者头像
我的小熊不见了丶
发布2019-05-23 00:05:00
11.6K5
发布2019-05-23 00:05:00
举报
文章被收录于专栏:晓月寒·

nginx缓存静态资源,只需几个配置提升10倍页面加载速度

首先我们看图说话

这是在没有缓存的情况下,这个页面发送了很多静态资源的请求:

1.png

可以看到,静态资源占用了整个页面加载用时的90%以上,而且这个静态资源还是已经在我使用了nginx配置压缩以后的大小,如果没有对这些静态资源压缩的话,那么静态资源加载应该会占用这个页面展示99%以上的时间。听起来是不是已经被吓到了,但是数据已经摆在这里了,这可不是危言耸听。

然后再看看使用了nginx缓存之后的效果图:

2.png

看到没有,朋友们,整个页面只有请求接口的时间和从本地磁盘加载css的时间。页面加载速度直接提升10倍以上!并且由于我这个页面没有采用前后端分离的方式,所以html没有缓存下来,如果采用了前后端分离架构的话,就连html都可以直接缓存,那提升的速度可想而知。当然由于浏览器或者手机端对页面加载的优化我们并不能很直观的感受到10倍的提升,实际上以肉眼观察的话,差不多减少了一半的时间,并且由于并没有向后端服务器请求这些静态资源,也相当于对后端服务器做了一层保护措施。

首先在http模块加配置:

代码语言:javascript
复制
# 开启gzip
gzip  on;
# 启用gzip压缩的最小文件,小于设置值的文件将不会压缩
gzip_min_length 1k;
# gzip 压缩级别,1-10,数字越大压缩的越好,也越占用CPU时间。一般设置1和2
gzip_comp_level 2;
# 进行压缩的文件类型。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 6 gzip
gzip_disable "MSIE [1-6]\.";
# 设置缓存路径并且使用一块最大100M的共享内存,用于硬盘上的文件索引,包括文件名和请求次数,每个文件在1天内若不活跃(无请求)则从硬盘上淘汰,硬盘缓存最大10G,满了则根据LRU算法自动清除缓存。
proxy_cache_path /var/cache/nginx/cache levels=1:2 keys_zone=imgcache:100m inactive=1d max_size=10g;

关于模块以及nginx配置信息在上一篇文章有说明。

可以看到在http模块中主要是使用gzip压缩,最后一个配置才是和缓存有关的配置。

然后是server中加上location配置

代码语言:javascript
复制
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 200 302 1d;
 proxy_cache_valid 404 10m;
 proxy_cache_valid any 1h;
 proxy_cache_use_stale error timeout invalid_header updating http_500 http_502 http_503 http_504;
 }

加上这两块配置之后,就能享受到缓存给你带来的快乐了。当然系统优化之路还是相当漫长的,nginx缓存只是其中的一块而已,想要把系统达到完美还需要在很多地方下功夫,比如这些静态资源完全可以直接在客户端缓存,这样连请求都不会往服务端发了,更大的减轻服务器的压力。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.03.08 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • nginx缓存静态资源,只需几个配置提升10倍页面加载速度
相关产品与服务
文件存储
文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档