ETag简介与作用

一、ETag简介

ETag是URL的tag,用来标示URL对象是否改变。这样可以应用于客户端的缓存:服务器产生ETag,并在HTTP响应头中将其传送到客户端,服务器用它来判断页面是否被修改过,如果未修改返回304,无需传输整个对象。

二、现在站点Sitemap存在的问题

二、现在站点Sitemap存在的问题

1、发现更新不及时

当站点或其Sitemap发生更新时,百度难以及时发现并响应,因为百度难以无时无刻地持续检查站点内容和Sitemap是否更新。

2、全量抓取,消耗带宽

现在百度对站点Sitemap的抓取会将Sitemap文件完整下载下来,鉴于Sitemap文件一般较大,而这种下载可能存在多次,故比较消耗网站的流量和带宽。

三、ETag的作用

HTTP1.1用ETag来判断请求的文件是否被修改,主要为了解决Last-Modified无法解决的一些问题

1、一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候并不希望客户端认为这个文件被修改了重新GET;

2、某些文件修改非常频繁,1秒内修改了N次,If-Modified-Since能检查到的粒度是秒级的,这种修改无法判断

3、某些服务器不能精确的得到文件的最后修改时间;

为此,HTTP1.1引入了ETag.但标准并没有规定ETag的内容是什么或者说要怎么实现,唯一规定的是ETag需要放在双引号内。ETag由服务器端生成,客户端通过If-Match或者说If-None-Match这个条件判断请求来验证资源是否修改。我们常见的是使用If-None-Match.请求一个文件的流程可能如下:

第一次请求:

  1. 客户端发起HTTP get请求一个文件
  2. 服务器处理请求,返回文件内容和一堆Header,当然包括ETag(例如"1ec5-502264e2ae4c0")(假设服务器支持ETag生成和已经开启了ETag).状态码200,如下图所示

第二次请求:

1.客户端发起HTTP GET请求一个文件,这个时候客户端同时发送一个If-None-Match头,这个头的内容就是我们第一次请求时服务器返回的ETag:1ec5-502264e2ae4c0

2.服务器判断发送过来的ETag和计算出来的ETag是匹配的,不返回200,返回304,让客户端继续使用本地缓存。

四、站点启用ETag的好处

1、Sitemap启用ETag后,百度就可以快速的知道Sitemap的更新。在内容没有做更改的情况下,服务器只发回304应答头,对流量的消耗极小。平均每个head在227B大小的通常下,如果24个小时每秒回应的流量消耗仅为18.7M。

  2、站长平台对每个站点的Sitemap主动抓取次数是有上限的,且 这项功能没有对所有站点开放,如果你的站点Sitemap开启了ETag,并通过了测试,就可以用较小的流量享受百度及时更新网站的Sitemap的功能。

  

ETag简介与作用的更多相关文章

  1. Intent官方教程(1)简介和作用

    Intents An Intent is a messaging object you can use to request an action from another app component. ...

  2. JavaScript简介及作用

    JavaScript是一门脚本语言,是可以插入HTML页面的编程代码,插入HTML以后可以由所有现代浏览器运行 一.写如html输出 <body> <script> docum ...

  3. PHP XML简介

    php xml文件编程. xml简介 XML作用 1.可以作为程序间通讯的标准(ajax text xml) 2.可以作为配置文件 3.可以作为小型数据库 XML语法 一个xml文件应该包括以下几个内 ...

  4. 【iOS 开发】iOS 开发 简介 (IOS项目文件 | MVC 模式 | 事件响应机制 | Storyboard 控制界面 | 代码控制界面 | Retina 屏幕图片适配)

    一. iOS 项目简介 1. iOS 文件简介 创建一个 HelloWorld 项目, 在这个 IOS 项目中有四个目录 : 如下图; -- HelloWorldTests 目录 : 单元测试相关的类 ...

  5. 【Android应用开发】Android Studio 简介 (Android Studio Overview)

    一. Intelij IDEA 环境简介 Android Studio 来源 : Android Studio 是 Intelij IDEA 的免费版本 + Android SDK 集成的; -- I ...

  6. 【嵌入式开发】 Linux Kernel 下载 配置 编译 安装 及 驱动简介

    作者 : 韩曙亮 转载请出名出处 : http://blog.csdn.net/shulianghan/article/details/38636827 一. Linux 内核简介 1. 内核功能简介 ...

  7. 01-项目简介Springboot简介入门配置项目准备

    总体课程主要分为4个阶段课程: ------------------------课程介绍------------------------ 01-项目简介Springboot简介入门配置项目准备02-M ...

  8. MySQL-08-索引简介

    B树 基于不同的查找算法分类介绍 B*Tree B-tree B+Tree 在范围查询方面提供了更好的性能(> < >= <= like) 索引简介 索引作用 提供了类似于书中 ...

  9. 透过浏览器看HTTP缓存

    作为前端开发人员,对于我们的站点或应用的缓存机制我们能做的似乎不多,但这些却是与我们关注的性能息息相关的部分,站点没有做任何缓存机制,我们的页面可能会因为资源的下载和渲染变得很慢,但大家都知道去找前端 ...

随机推荐

  1. SpringMVC整合mybaitis

    目录 一.新建一个基于Maven的Web项目 二.创建数据库与表 三.添加依赖包 四.新建POJO实体层 五.新建MyBatis SQL映射层 六.完成Spring整合MyBatis配置 七.创建服务 ...

  2. umi 调试

    最近在umi.  设置一个layout字段, 结果左边菜单栏就出现了. 很神奇. 决定对这个库一探究竟. 我是一个喜欢看底层库的人,网上所有的启动方式都是yarn或者npm start 启动服务.然后 ...

  3. Machine Learning Note

    [Andrew Ng NIPS2016演讲]<Nuts and Bolts of Applying Deep Learning (Andrew Ng) 中文详解:https://mp.weixi ...

  4. WeChair项目Alpha冲刺(5/10)

    团队项目进行情况 1.昨日进展    Alpha冲刺第五天 昨日进展: 前端:完成小程序登录态的定义 后端:成功部署项目到服务器并能通过域名访问项目 数据库:调整属性数据类型 2.今日安排 前端:完善 ...

  5. Windwos安装Redis

    下载地址:https://github.com/MicrosoftArchive/redis 进入后点击release,下方可看到下载地址,下载mis文件,双击即可安装

  6. 入门大数据---Flume 简介及基本使用

    一.Flume简介 Apache Flume 是一个分布式,高可用的数据收集系统.它可以从不同的数据源收集数据,经过聚合后发送到存储系统中,通常用于日志数据的收集.Flume 分为 NG 和 OG ( ...

  7. Vue学习-组件的基本使用(局部组件)

    目录 示例代码 1.创建组件(构造器对象创建-Vue.extend) 2.注册组件 3.使用组件 4.语法糖创建并注册组件 示例代码 http://jsrun.net/H8vKp/edit 1.创建组 ...

  8. ASP.NET MVC 四种Controller向View传值方法

    控制器: // Get: Data public ActionResult Index() { //ViewData 方式 ViewData["UserName"] = " ...

  9. .netcore开发环境和服务器注意事项

    对于开发环境,如果你需要使用.netcore命令的话,你需要安装SDK:如果你还需要运行.netcore的网站的话,你必须还要安装它的[runtime]和[hosting server]: 对于服务器 ...

  10. Centos 6.4 安装Mplayer 播放器

    1.Download the rpmforge-release package. URL1:x86_64.rmp URL2:tar.gz    推荐!!! 2.Install DAG's GPG ke ...