squid配合nginx的gzip压缩的完美解决方案
squid不支持常见的gzip压缩的原因,有以下两点:
1, squid只支持gzip的静态压缩,不支持动态压缩。具体一点说,就是response header里必须有content-length, 不可以用chunked方式。
2, response header中必须有Vary : Accept-Encoding
只要具备以上几点,squid就可以完美的识别压缩和不压缩的内容。
下面说一下nginx针对这个问题的解决方案:
nginx默认的NginxHttpGzipModule, 采用的是chunked方式的动态压缩,而squid是不支持的。需要使用http_gzip_static_module这个模块,进行pre-compress。
具体方法如下:
ngx_http_gzip_static_module was introduced in nginx 0.6.24. You must enable support at compile time:
./configure --with-http_gzip_static_module ...
配置文件写法:
gzip on
gzip_static on;
gzip_http_version 1.0;
gzip_proxied any;
gzip_disable "MSIE [1-6]\.";
gzip_comp_level 9;
注意,这里没有加入gzip_vary on;。这是因为http_gzip_static_module这个模块,只给没压缩的内容加入了vary header,而不是所有内容都加。
所以不能打开这个参数。可以在nginx.conf中手动设置vary header。这样不管压缩与否,返回的文件都会被加上Vary: Accept-Encoding。
至此,nginx的gzip压缩,就能够被squid完美支持了。如果你使用Http1.0,就会返回你没压缩的内容。如果你使用http1.1,并且发送Accept-Encoding:gzip,deflate,就会返回压缩后的内容。
PS: 我又发现了一个问题,就是squid的cache保存问题。按照文档上说,squid是根据url来缓存对象的。
也就是说,一个url应该只保留一个cache。如果你交替的申请压缩的和不压缩的内容,是会出现反复MISS的情况的。
但是我实际测试的过程中,发现不是这样的,交替的申请压缩的和不压缩的内容,是会一直HIT的。这说明squid是同时保存两份cache的(压缩的和不压缩的)。
也就是说,一个url应该只保留一个cache。如果你交替的申请压缩的和不压缩的内容,是会出现反复MISS的情况的。
但是我实际测试的过程中,发现不是这样的,交替的申请压缩的和不压缩的内容,是会一直HIT的。这说明squid是同时保存两份cache的(压缩的和不压缩的)。
转载于:https://blog.51cto.com/mooon/908924
squid配合nginx的gzip压缩的完美解决方案相关推荐
- Nginx开启Gzip压缩配置详解
Nginx开启Gzip压缩配置详解 最近生产上发生了一些问题,原先所有的静态资源文件都是经过gzip压缩的,然而这几天突然都没有压缩了,经过一顿排查,发现是Nginx的配置有问题,借此机会详细了解了N ...
- nginx的gzip压缩
随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢? gzip(GNU-ZIP)是一种压缩技术.经过gzi ...
- nginx 开启gzip压缩
一.背景介绍 历史遗留问题,在项目创建初期前端力量薄弱,网站大部分image.js.css与业务应用存放在一起,未上传到CDN中,最终导致网站访问缓慢,经过排查由于静态资源大量消耗带宽. ...
- Nginx开启gzip压缩配置参数
Nginx开启gzip压缩配置参数 场景 图片资源较大,前端页面响应加载时间较长 解决方案 开启nginx的gzip进行资源的压缩,可以达到压缩静态文件大小,提高页面访问速度,节省流量和带宽的效果. ...
- 在windows、linux中开启nginx的Gzip压缩大大提高页面、图片加载速度转
为了降低tomcat服务的压力,把页面上的图片采用windows版的nginx进行加载,由于有些图片比较大,加载特别的慢,所以在nginx中打开了gzip的压缩功能.加载图片的速度快了很多. 通过站长 ...
- nginx的gzip压缩功能
我们在开发网站的时候,应该要考虑到pv,因为pv比较大可能会造成服务器带宽不够用,进而导致用户体验变差. 这个时候我们就可以考虑用nginx的gzip功能. 在nginx中开启gzip压缩功能很简单, ...
- Nginx开启gzip压缩解决react打包文件过大
用create-react-app创建的react应用打包之后的build js有1M之多. 采用gzip打包传输,可以节约70%左右的带宽 nginx采用gzip打包方式 在nginx配置中添加如下 ...
- Nginx中Gzip压缩功能的实例配置
Gzip压缩功能的实例配置 gzip on; #开启gzip功能 gzip_types *; #压缩源文件类型,根据具体的访问资源类型设定 gzip_comp_level 6; #gzip压缩级别 g ...
- Nginx 笔记与总结(13)Nginx 的 gzip 压缩
使用 FireFox(40.0)访问博客园(http://www.cnblogs.com/),观察 http 头信息 请求头信息: Accept-Encoding gzip, deflate 表示浏览 ...
最新文章
- flask 使用 SQLAlchemy 的两种方式
- 模板匹配,特征点匹配-全
- android 市场自动安装软件,Android 应用中跳转到应用市场评分示例
- python3对urllib和urllib2进行了重构
- MSSQL的多层嵌套查询
- 【Unity】11.2 刚体(Rigidbody)
- attribute java c_属性别名(Attribute Aliasing)
- python之ORM操作
- 深入理解HashMap和LinkedHashMap的区别
- C语言荣获2019年度最佳编程语言
- c语言课程设计物业,C语言课程设计报告--物业管理系统.doc
- 201671010406 词频统计软件项目报告
- mysql跨服务跨库查询
- Exploit-exercises
- 2021年全球与中国孕妇防辐射服行业市场规模及发展前景分析
- 百分点认知智能实验室:如何打造工业级的机器翻译
- “脱离应用开发者的数据库,不会成功”,黄东旭万字长文剖析数据库发展新趋势...
- 【mysql】You must reset your password using ALTER USER statement before executing this statement报错处理
- GEE开发之ERA5(气温、降水、压力、风速等)数据获取和分析
- 小米盒子3增强版android tv,2017小米盒子3增强版免费看海量热门大片软件推荐
热门文章
- 2020移动apn接入点哪个快_手机推荐:为什么别人的手机4G网总是比你快?这样设置一下,网速立马飙升...
- oracle refresh force,千万级表上的物化视图(force模式 ),手动刷新,为何速度奇慢?...
- html漂浮在左侧不动,[CSS]CSS练习-悬浮不动侧边栏
- 给数组里面的对象添加一个新的数据
- axios基础和封装
- 【自动驾驶】8. MDC通信架构 + DDS + SOME/IP
- 七大排序算法的个人总结(一)
- Excel表格数据导入到SQLServer数据库
- 涨姿势!北京地铁原来是16条旅游专线
- CS231n课程笔记翻译:图像分类笔记(上)