以环球网的一篇新闻为例,抓包图:

(Powered-By-ChinaCache:HIT from 060120b3g7.16 表示当前页面不是来自环球网的主服务器,而是来自中国的缓存服务器节点,HIT 表示命中,from 表示命中了哪一台服务器)

 

Content-Length:8306

当把当前页的源代码复制到 html 文件中,会发现文件的大小大于 Content-Length 显示的字节数。

原因在于 Content-Encoding:gzip 这个响应头信息。

为了加快网页在网络上的传输速度,服务器对主体信息进行压缩,例如 gzip 压缩、deflate 压缩、compress 压缩(Linux 服务器下)、google Chrome 的 sdch 压缩。

服务器对网页进行压缩,压缩过的内容返回给客户端,Content-Length 是压缩后的长度,客户端接受以后进行解压缩,再进行页面的渲染。

在 Apache 上打开压缩模块(启用压缩功能)

① 在 httpd.conf 中开启 deflate 模块或 gzip 模块

② 在 httpd.conf 文件中添加:

<ifmodule mod_deflate.c>
DeflateCompressionLevel 6 #压缩率,可选1-0, 6是建议值
AddOutputFilterByType DEFLATE text/plain #压缩文本文件
AddOutputFilterByType DEFLATE text/html #压缩 html 文件
AddOutputFilterByType DEFLATE text/xml #压缩 xml 文件
AddOutputFilterByType DEFLATE text/css #压缩 css 文件
AddOutputFilterByType DEFLATE text/javascript #压缩 js 文件
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/atom_xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE application/x-httpd-php #压缩 php 文件
AddOutputFilterByType DEFLATE image/svg+xml
</ifmodule>

因为压缩会消耗 CPU 资源,另外比如图片/视频的压缩效果不明显,因此要指定文件类型来压缩,一般压缩文本格式的文件。

【例】

cache-01.html

压缩之前:

Content-Length:187

压缩之后:

Content-Length:152

在 HTTP 请求头信息中,Accept-Encoding 会表明当前浏览器(客户端)支持的压缩格式,这种头信息一般又叫做协商头信息:

在做采集功能时,可以不发送 Accept-Encoding 信息,这样采集到的直接是源码,也可以采集 gzip ,提高速度,再用 php 解压 gzip 的内容。

 

HTTP 笔记与总结(8)HTTP 与内容压缩的更多相关文章

  1. 07 http内容压缩

    一:http内容压缩 思考: Content-Length在之前的学习中,我们知道,代表返回的主体的长度 但此处,为什么返回的主体长度和content-length不一致呢? 原因在于: Conten ...

  2. Android学习笔记(二十)——自定义内容提供器

    //此系列博文是<第一行Android代码>的学习笔记,如有错漏,欢迎指正! 如果我们想要实现跨程序共享数据的功能,官方推荐的方式就是使用内容提供器,可以通过新建一个类去继承 Conten ...

  3. Dos学习笔记(2)dos屏幕内容的复制

    方法1,选择复制,右键dos屏幕=>标记=>然后选择开始复制的地方,拖动覆盖要复制的内容,好了之后,按回车键(Enter). 方法2,全部复制,右键dos屏幕=>全选=>然后回 ...

  4. JavaScript学习笔记——DOM_对document对象的内容、属性、样式的操作

    javascript-对文档对象的内容.属性.样式的操作 一.操作内容 1. innerHTML 用来设置或获取对象起始和结束标签内的内容(识别html标签) 2. innerText 用来设置或获取 ...

  5. php学习笔记:读取文档的内容,利用php修改文档内容

    直接上代码 <?php /** * Created by PhpStorm. * User: Administrator * Date: 2016/9/10 0010 * Time: 20:27 ...

  6. 【读书笔记】iOS网络-HTTP-请求内容

    一,GET方法. 从服务器获取一段内容,用HTTP术语来说就是实体.GET请求通常不包含请求体,不过也是可以包含的.有些网络缓存设施只会缓存GET响应.GET请求通常不会导致服务器端的数据变化. 二, ...

  7. cocos2d-x笔记4: TextField不能删除内容,以及我的解决办法。。。

    3.0正式版,win32下,TextField按下backspace键不能删除内容.网上搜了下,很早就有的问题了,正式版了竟然还不解决... 真心无力吐槽啊!!!这种巨大而又明显的Bug... 从昨天 ...

  8. Android(java)学习笔记253:ContentProvider使用之内容观察者02

    下面通过3个应用程序之间的交互说明一下内容观察者: 一. 如下3个应用程序为相互交互的: 二.交互逻辑图: 三.具体代码: 1.   16_数据库工程: (1)数据库帮助类BankDBOpenHelp ...

  9. Android(java)学习笔记252:ContentProvider使用之内容观察者01

    1. 内容观察者 不属于四大组件,只是内容提供者ContentProvider对应的小功能. 如果发现数据库内容变化了,就会立刻观察到. 下面是逻辑图:       当A应用中银行内部的数据发生变化的 ...

随机推荐

  1. Cookie的使用与实现记住用户名案例

    学习web开发,使用Cookie是不可避免的,个人感觉Cookie的使用和ASP.NET中的Session非常像,只不过Cookie是保存在客户端,而Session是在服务器端,两者都以记录信息为目的 ...

  2. 解决TIME_WAIT过多造成的问题

    sh-4.1# netstat -an |awk '/tcp/ {++S[$NF]}END {for (a in S) print a , S[a]}' TIME_WAIT CLOSE_WAIT ES ...

  3. adb logcat 命令

    转自:http://blog.csdn.net/tumuzhuanjia/article/details/39555445 1. 解析 adb logcat 的帮助信息 在命令行中输入 adb log ...

  4. oracle 10g 学习之服务器端安装(1)

    Oracle 简介 lOracle 是殷墟出土的甲骨文(oracle bone inscriptions)的英文翻译的第一个单词 lOracle 公司是全球最大的信息管理软件及服务供应商,成立于197 ...

  5. 关于PHP数组转字符串详细介绍

    随着时代的发展,我们的开发技术也随着更新,对于PHP还是比较常用的,于是我研究了一下PHP数组转字符串,在这里拿出来和大家分享一下,希望对大家有用. 经常需要使用PHP处理字符string,PHP内置 ...

  6. 【软件工程】week5-个人作业-敏捷开发方法初窥

    敏捷开发方法初窥 引言:本周的软件工程个人博客作业是阅读关于敏捷开发方法的文章(http://martinfowler.com/agile.html),并撰写自己的读后感.文章内容非常丰富,对敏捷开发 ...

  7. AutoCompleteTextView自动填充文本

    布局: <AutoCompleteTextView android:id="@+id/auto" android:layout_width="match_paren ...

  8. BroadcastRecevier广播接受者

    广播接收器的两种注册方式: 1)动态注册:在代码中注册,创建一个IntentFilter(意图过滤器)对象,设置想要就收的广播,在onCreate()方法中通过调用registerReceiver() ...

  9. 自定义ContentProvider的一些细节探究

    1.   适用范围 对于什么情况下才会用到自定义的ContentProvider,官方文档的Dev Guide是这样描述的: 如果你想要提供以下的一种或几种特性的时候你才需要构造一个ContentPr ...

  10. cf 333b

    G - Chips Time Limit:1000MS     Memory Limit:262144KB     64bit IO Format:%I64d & %I64u Submit S ...