etag_oss中的etag是什么 - CSDN
精华内容
参与话题
  • 什么是Etag

    千次阅读 2017-09-12 22:09:31
    Etag由服务器端生成,客户端通过If-Match或者说If-None-Match这个条件判断请求来验证资源是否修改。常见的是使用If-None-Match。 Etag的作用:主要为了解决 Last-Modified 无法解决的一些问题。 请求流程如下:...

    Etag由服务器端生成,客户端通过If-Match或者说If-None-Match这个条件判断请求来验证资源是否修改。常见的是使用If-None-Match。


    Etag的作用主要为了解决 Last-Modified 无法解决的一些问题。


    请求流程如下:

    当发送一个服务器请求时,浏览器首先会进行缓存过期判断。浏览器根据缓存过期时间判断缓存文件是否过期。


    情景一:若没有过期,则不向服务器发送请求,直接使用缓存中的结果,此时我们在浏览器控制台中可以看到 200 OK(from cache) ,此时的情况就是完全使用缓存,浏览器和服务器没有任何交互的。  

    情景二:若已过期,则向服务器发送GET请求,此时请求中会带上文件修改时间和Etag。


    然后,进行资源更新判断。服务器根据浏览器传过来的文件修改时间,判断自浏览器上一次请求之后,文件是不是没有被修改过;根据Etag,判断文件内容自上一次请求之后,有没有发生变化


    情形一:若两种判断的结论都是文件没有被修改过,则服务器就不给浏览器发index.html的内容了,直接告诉它,文件没有被修改过,你用你那边的缓存吧—— 304 Not Modified,此时浏览器就会从本地缓存中获取index.html的内容。此时的情况叫协议缓存,浏览器和服务器之间有一次请求交互

    情形二:若修改时间和文件内容判断有任意一个没有通过,则服务器会受理此次请求,之后的操作同情景一。





    展开全文
  • ETag详解

    万次阅读 2016-08-23 16:00:46
    在HTTP1.1规范中,新增了一个HTTP头信息:ETag。对Web开发者来说,它是一个非常重要的信息。它是用作缓存使 用的两个主要的头信息之一 ...强ETag与弱ETag之间有什么区别。?如何计算 ETag值?

    在HTTP1.1规范中,新增了一个HTTP头信息:ETag。对Web开发者来说,它是一个非常重要的信息。它是用作缓存使

    用的两个主要的头信息之一 (另一个是Expires)。除此之外,在REST架构中,它还可以用于控制并发操作(上节中已经大

    致介绍AtomPub中控制并发的流程)。那么ETag是什么?它又几种类型?强ETag与弱ETag之间有什么区别。?如何计算

    ETag值?它与Last-Modified头信息在使用上有什么区别?本节主要围绕这几个方面叙述一下自己的理解。


    目录:

    1. 什么是ETag?
    2. 计算ETag值
    3. ETag的类型以及他们之间的区别
    4. ETag与Last-Modified头信息用途上的区别

    什么是ETag? 

    ETag:是实体标签(Entity Tag)的缩写。ETag一般不以明文形式相应给客户端。在资源的各个生命周期中,它都具有不

    值,用于标识出资源的状态。当资源发生变更时,如果其头信息中一个或者多个发生变化,或者消息实体发生变化

    ,那ETag也随之发生化。

    ETag值的变更说明资源状态已经被修改。往往可以通过时间戳就可以便宜的得到ETag头信息。在服务端中如果发回给

    消费者的相应一开始起就由ETag控制,那么可以确保更细粒度的ETag升级完全由服务来进行控制。服务计算ETag值,

    并在相应客户端请求时将它返回给客户端。

    计算ETag值

    在HTTP1.1协议中并没有规范如何计算ETag。ETag值可以是唯一标识资源的任何东西,如持久化存储中的某个资源关联

    的版本、一个或者多个文件属性,实体头信息和校验值、(CheckSum),也可以计算实体信息的散列值。有时候,为了计

    算一个ETag值可能有比较大的代价,此时可以采用生成唯一值等方式(如常见的GUID)。无论怎样,服务都应该尽可能的

    将ETag值返回给客户端。客户端不用关心ETag值如何产生,只要服务在资源状态发生变更的情况下将ETag值发送给它就行

    。下图为MSDN中,OutgoingResponse类中设置ETag值的截图:

    2011-12-24_105957

    从上图可以看出,在REST架构下,ETag值可以通过Guid、整数、长整形、字符串四种类型的参数传入SetETag方法,

    WCF服务发回给客户端的HTTP响应头中就包含了ETag值。另外OutgoingResponse类也有字符串属性:ETag直接给

    它赋值也能在HTTP响应头中写入ETag值。

    如下所示为使用文件属性计算ETag:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    public class ETag : IHeader
       {
           private string Value;
     
           public ETag(string value)
           {
               Value = value;
               WebOperationContext.Current.OutgoingResponse.ETag
           }
     
           #region IHeader 成员
     
           public void AddHTTPHeader(ResponseContext context)
           {
               context.WriteHttpHeader(Value);
           }
     
           #endregion
       }
    1
    <font face="微软雅黑" size="2">获取ETag:</font>
    1
    ETag eTag = new ETag(fileInfo.Name+fileInfo.LastWriteTimeUtc.ToString())

    计算ETag值时,需要考虑两个问题:计算与存储。如果一个ETag值只需要很小的代价以及占用很低的存储空间,那么

    我们以在每次需要发送给客户端ETag值值的时候计算一遍就行行了。相反的,我们需要将之前就已经计算并存储好

    的ETag值发送给客户端。之前说:将时间戳作为字符串作为一种廉价的方式来获取ETag值。对于不是经常变化的消息,

    它是一种足够好的方案。注意:如果将时间戳做为ETag值,通常不应该用Last-Modified的值。由于HTTP机制中,所

    以当我们在通过服务校验资源状态时,客户端不需要进行相应的改动。计算ETag值开销最大的一般是计算采用哈希算法

    获取资源的表述值。可以只计算资源的哈希值,也可以将头信息和头信息的值也包含进去。如果包含头信息,那么注意

    不要包含计算机标识的头信息。同样也应该避免包含Expires、Cache-Control和Vary头信息。注意:在通过哈希算法

    计算ETag值时,先要组装资源的表述。若组装也比较耗时,可以采用生成GUID的方式。优化ETag值的获取。

    ETag的类型以及他们之间的区别

    ETag有两种类型:强ETag(strong ETag)与弱ETag(weak ETag)。

    强ETag表示形式:"22FAA065-2664-4197-9C5E-C92EA03D0A16"。

    弱ETag表现形式:w/"22FAA065-2664-4197-9C5E-C92EA03D0A16"。

    强、弱ETag类型的出现与Apache务器计算ETag的方式有关。Apache默认通过FileEtag中FileEtag INode Mtime Siz

    e的配置自动生成ETag(当然也可以通过用户自定义的方式)。假设服务端的资源频繁被修改(如1秒内修改了N次),此时

    如果有用户将Apache的配置改为MTime,由于MTime只能精确到秒,那么就可以避免强ETag在1秒内的ETag总是不同而

    频繁刷新Cache(如果资源在秒级经常被修改,也可以通过Last-Modified来解决)。


    ETag与Last-Modified头信息用途上的区别

    按照HTTP标准,Last-Modified只能精确到秒级。ETag的出现可以很好的解决这个问题。在用途上,ETag常与

    If-None-Match或者If-Match一起,由客户端通过HTTP头信息(包括ETag值)发送给服务端处理。ETag使用如下:

    Get /Order/36 Http1.1

    If-Match:"22FAA065-2664-4197-9C5E-C92EA03D0A16"

    或If-None-Match:"22FAA065-2664-4197-9C5E-C92EA03D0A16"

    Last-Modified常与If-Modified-Since一起由客户端将Last-Modified值包括在HTTP头信息中发给服务端进行处理。

    其使用如下:

    If-Modified-Since:Sat,24 Dec 2011 11:55:36 GMT

    展开全文
  • Etag & If-None-Match 专题

    2019-05-17 01:15:07
    一、概述 缓存通俗点,就是将已经得到的‘东东’存放在一个相对于自己而言,尽可能近的地方,以便下次需要时,不会再二笔地跑到起始点(很远的地方)去获取,而是就近解决,从而缩短时间和节约金钱(坐车要钱嘛)。...
    一、概述

    缓存通俗点,就是将已经得到的‘东东’存放在一个相对于自己而言,尽可能近的地方,以便下次需要时,不会再二笔地跑到起始点(很远的地方)去获取,而是就近解决,从而缩短时间和节约金钱(坐车要钱嘛)。Web缓存,也是同样的道理,说白了,就是当你第一次访问网址时,将这个东东(representations),如html页面、图片、JavaScript文件等,存在一个离你较近的地方,当你下次还需要它时,不用再一次跋山涉水到服务器(origin servers)去获取。继而,web缓存的优势也就很明显了:

      1、 减少了网络延迟,加快了页面响应速度,增强了用户体验嘛。(因为我是就近获取的,路程缩短了,所以响应速度当然比到遥远的服务器去获取快哦);

      2、 减少了网络带宽消耗嘛。(就近获取);

      3、 通过缓存,我们都不用到服务器 (origin servers)去请求了,从而也就相应地减轻了服务器的压力。

    那web缓存将这些东东放在哪儿呢?下面我就看看有哪些缓存种类,从而了解放在哪吧。

    二、Web缓存的种类

    --数据库缓存--:

    当web应用关系复杂,数据表蹭蹭蹭往上涨时,可以将查询后的数据放到内存中进行缓存,下次再查询时,就直接从内存缓存中获取,从而提高响应速度。

    --CDN缓存--:

    CDN通俗点,就是当我们发送一个web请求时,会先经过它一道手,然后它帮我们计算路径,去哪得到这些东东(representations)的路径短且快。这个是网站管理员部署的,所以他们也可以将大家经常访问的representations放在CDN里,这样,就响应就更快了。

    --代理服务器缓存--:

    代理服务器缓存,其实跟下面即将讲的浏览器缓存性质差不多,差别就是代理服务器缓存面向的群体更广,规模更大而已。即,它不只为一个用户服务,一般为大量用户提供服务,同一个副本会被重用多次,因此在减少相应时间和带宽使用方面很有效。

    --浏览器缓存--:

    简而言之,就是,每个浏览器都实现了 HTTP 缓存,我们通过浏览器使用HTTP协议与服务器交互的时候,浏览器就会根据一套与服务器约定的规则进行缓存工作。当我们点击浏览器上‘后退’或者‘前进’按钮时,显得特别有用。

    三、Web缓存的执行机制

    所谓机制就是一些双方的约定,清晰地告诉对方,什么时候该做什么事。web缓存也一样,你总得告诉我(请求)什么时候到缓存中去获取,什么到服务器去获取representations吧。So,也得有一套相应的机制,web 缓存机制分为两大部分http协议(HTTP1.0和HTTP1.1)和网站管理人员制定的协议。抛开网站内部制定的协议,我们来看看http协议中定义的缓存机制。

    By the way,我们可以在HTML文档中的<head>中通过<meta>来缓存,如下:

    <meta http-equiv="Pragma" content="no-cache"/>

    但,它只有部分浏览器可以用,并且代理服务器也不会鸟它。(因为meta在html中,代理服务器几乎不回去读它滴)。

    --http缓存机制--

    1、 Expires

    http缓存机制主要在http响应头中设定,响应头中相关字段为Expires、Cache-Control、Last-Modified、If-Modified-Since、Etag。

    HTTP 1.0协议中的。简而言之,就是告诉浏览器在约定的这个时间前,可以直接从缓存中获取资源(representations),而无需跑到服务器去获取。

    另:Expires因为是对时间设定的,且时间是Greenwich Mean Time (GMT),而不是本地时间,所以对时间要求较高。

    2、 Cache-Control

    HTTP1.1协议中的,因为有了它,所以可以忽略上面提到的Expires。因为Cache-Control相对于Expires更加具体,细致。

    且,就算同时设置了Cache-Control和Expires,Cache-Control的优先级也高于Expires。

    下面就来看看,Cache-Control响应头中常用字段的具体含义:

      (1)、max-age:用来设置资源(representations)可以被缓存多长时间,单位为秒;

      (2)、s-maxage:和max-age是一样的,不过它只针对代理服务器缓存而言;

      (3)、public:指示响应可被任何缓存区缓存;

      (4)、private:只能针对个人用户,而不能被代理服务器缓存;

      (5)、no-cache:强制客户端直接向服务器发送请求,也就是说每次请求都必须向服务器发送。服务器接收到请求,然后判断资源是否变更,是则返回新内容,否则返回304,未变更。这个很容易让人产生误解,使人误以为是响应不被缓存。实际上Cache-Control: no-cache是会被缓存的,只不过每次在向客户端(浏览器)提供响应数据时,缓存都要向服务器评估缓存响应的有效性。

      (6)、no-store:禁止一切缓存(这个才是响应不被缓存的意思)。

    3、 Etag & If-None-Match

    HTTP/1.1 200 OK
    Date: Fri, 30 Oct 1998 13:19:41 GMT
    Server: Apache/1.3.3 (Unix)
    Cache-Control: max-age=3600, must-revalidate
    Expires: Fri, 30 Oct 1998 14:19:41 GMT
    Last-Modified: Mon, 29 Jun 1998 02:28:12 GMT
    ETag: "3e86-410-3596fbbc"
    Content-Length: 1040
    Content-Type: text/html

    Etag是属于HTTP 1.1属性,它是由服务器生成返回给前端,

    当你第一次发起HTTP请求时,服务器会返回一个Etag

    并在你第二次发起同一个请求时,客户端会同时发送一个If-None-Match,而它的值就是Etag的值(此处由发起请求的客户端来设置)。

    然后,服务器会比对这个客服端发送过来的Etag是否与服务器的相同

    如果相同,就将If-None-Match的值设为false,返回状态为304,客户端继续使用本地缓存,不解析服务器返回的数据(这种场景服务器也不返回数据,因为服务器的数据没有变化嘛)

    如果不相同,就将If-None-Match的值设为true,返回状态为200,客户端重新解析服务器返回的数据

    说白了,
    ETag 实体标签: 一般为资源实体的哈希值
    即ETag就是服务器生成的一个标记,用来标识返回值是否有变化

    且Etag的优先级高于Last-Modified

    3xx
    301 Move Permanently
    302 Found
    304 Not Modified

    4、 Last-Modified & If-Modified-Since

    Last-Modified与Etag类似。不过Last-Modified表示响应资源在服务器最后修改时间而已。与Etag相比,不足为:

      (1)、Last-Modified标注的最后修改只能精确到秒级,如果某些文件在1秒钟以内,被修改多次的话,它将不能准确标注文件的修改时间;

      (2)、如果某些文件会被定期生成,当有时内容并没有任何变化,但Last-Modified却改变了,导致文件没法使用缓存;

      (3)、有可能存在服务器没有准确获取文件修改时间,或者与代理服务器时间不一致等情形。

    然而,Etag是服务器自动生成或者由开发者生成的对应资源在服务器端的唯一标识符,能够更加准确的控制缓存。

    四、扩展阅读

    [1]、"Caching Tutorial"

     

     

    RFC 7232              HTTP/1.1 Conditional Requests            June 2014
    
    
       This method relies on the fact that if two different responses were
       sent by the origin server during the same second, but both had the
       same Last-Modified time, then at least one of those responses would
       have a Date value equal to its Last-Modified time.  The arbitrary
       60-second limit guards against the possibility that the Date and
       Last-Modified values are generated from different clocks or at
       somewhat different times during the preparation of the response.  An
       implementation MAY use a value larger than 60 seconds, if it is
       believed that 60 seconds is too short.
    
    

     

    2.3. ETag

     

    
    
       The "ETag" header field in a response provides the current entity-tag
       for the selected representation, as determined at the conclusion of
       handling the request.  An entity-tag is an opaque validator for
       differentiating between multiple representations of the same
       resource, regardless of whether those multiple representations are
       due to resource state changes over time, content negotiation
       resulting in multiple representations being valid at the same time,
       or both.  An entity-tag consists of an opaque quoted string, possibly
       prefixed by a weakness indicator.
    
         ETag       = entity-tag
    
         entity-tag = [ weak ] opaque-tag
         weak       = %x57.2F ; "W/", case-sensitive
         opaque-tag = DQUOTE *etagc DQUOTE
         etagc      = %x21 / %x23-7E / obs-text
                    ; VCHAR except double quotes, plus obs-text
    
          Note: Previously, opaque-tag was defined to be a quoted-string
          ([RFC2616], Section 3.11); thus, some recipients might perform
          backslash unescaping.  Servers therefore ought to avoid backslash
          characters in entity tags.
    
       An entity-tag can be more reliable for validation than a modification
       date in situations where it is inconvenient to store modification
       dates, where the one-second resolution of HTTP date values is not
       sufficient, or where modification dates are not consistently
       maintained.
    
       Examples:
    
         ETag: "xyzzy"
         ETag: W/"xyzzy"
         ETag: ""
    

     

     https://tools.ietf.org/html/rfc7232#section-2.3





    展开全文
  • Etag 和 If-None-Match

    2019-07-25 17:41:10
    它的原理是这样的,当浏览器请求服务器的某项资源(A)时, 服务器根据A算出一个哈希值(3f80f-1b6-3e1cb03b)并通过 ETag 返回给浏览器,浏览器把"3f80f-1b6-3e1cb03b" 和 A 同时缓存在本地,当下次再次向服务器请求A时...
          ETag是HTTP1.1中才加入的一个属性,用来帮助服务器控制Web端的缓存验证
     
         它的原理是这样的,当浏览器请求服务器的某项资源(A)时, 服务器根据A算出一个哈希值(3f80f-1b6-3e1cb03b)并通过 ETag 返回给浏览器,浏览器把"3f80f-1b6-3e1cb03b" 和 A 同时缓存在本地,当下次再次向服务器请求A时,会通过类似 If-None-Match: "3f80f-1b6-3e1cb03b" 的请求头把ETag发送给服务器,服务器再次计算A的哈希值并和浏览器返回的值做比较,如果发现A发生了变化就把A返回给浏览器(200),如果发现A没有变化就给浏览器返回一个304未修改。这样通过控制浏览器端的缓存,可以节省服务器的带宽,因为服务器不需要每次都把全量数据返回给客户端。

         性能

          聪明的服务器开发者会把ETags和GET请求的“If-None-Match”头一起使用,这样可利用客户端(例如浏览器)的缓存。因为服务器首先产生ETag,服务器可在稍后使用它来判断页面是否已经被修改。本质上,客户端通过将该记号传回服务器要求服务器验证其(客户端)缓存。
         其过程如下:
         1. 客户端请求一个页面(A)。 服务器返回页面A,并在给A加上一个ETag。 客户端展现该页面,并将页面连同ETag一起缓存。         2. 客户再次请求页面A,并将上次请求时服务器返回的ETag一起传递给服务器。
         3. 服务器检查该ETag,并判断出该页面自上次客户端请求之后还未被修改,直接返回响应304(未修改——Not Modified)和一
            个空的响应体。

         通常情况下,ETag更类似于资源指纹(fingerprints),如果资源发生变化了就会生成一个新的指纹,这样可以快速的比较资源的变化。在服务器端实现中,很多情况下并不会用哈希来计算ETag,这会严重浪费服务器端资源,很多网站默认是禁用ETag的。有些情况下,可以把ETag退化,比如通过资源的版本或者修改时间来生成ETag。

         如果通过资源修改时间来生成ETag,那么效果和HTTP协议里面的另外一个控制属性(Last-Modified)就雷同了,使用 Last-Modified 的问题在于它的精度在秒(s)的级别,比较适合不太敏感的静态资源。

       请求流程

        Etag由服务器端生成,客户端通过If-Match或者说If-None-Match这个条件判断请求来验证资源是否修改。常见的是使用If-None-Match.请求一个文件的流程可能如下
        第一次请求:
        1.客户端发起 HTTP GET 请求一个文件;
        2.服务器处理请求,返回文件内容和一堆Header,当然包括Etag(例如"2e681a-6-5d044840")(假设服务器支持Etag生成和已经开启了Etag).状态码200
       第二次请求:
       1.客户端发起 HTTP GET 请求一个文件,注意这个时候客户端同时发送一个If-None-Match头,这个头的内容就是第一次请求时服务器返回的Etag:2e681a-6-5d044840
       2.服务器判断发送过来的Etag和计算出来的Etag匹配,因此If-None-Match为False,不返回200,返回304,客户端继续使用本地缓存
       流程很简单,问题是,如果服务器又设置了Cache-Control:max-age和Expires呢,怎么办?
       答案是同时使用,也就是说在完全匹配If-Modified-Since和If-None-Match即检查完修改时间和Etag之后,服务器才能返回304.(不要陷入到底使用谁的问题怪圈)

       作用

        Etag 主要为了解决 Last-Modified 无法解决的一些问题。
          1、一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候我们并不希望客户端认为这个文件被修改了,而重新GET;
          2、某些文件修改非常频繁,比如在秒以下的时间内进行修改,(比方说1s内修改了N次),If-Modified-Since能检查到的粒度是s级的,这种修改无法判断(或者说UNIX记录MTIME只能精确到秒)
         3、某些服务器不能精确的得到文件的最后修改时间;
        为此,HTTP/1.1引入了 Etag(Entity Tags).Etag仅仅是一个和文件相关的标记,可以是一个版本标记,比如说v1.0.0或者说"2e681a-6-5d044840"这么一串看起来很神秘的编码。但是HTTP/1.1标准并没有规定Etag的内容是什么或者说要怎么实现,唯一规定的是Etag需要放在""内。
     

      If-None-Match 

         这是一个条件式请求首部。对于GET 和 HEAD 请求方法来说,当且仅当服务器上没有任何资源的 ETag 属性值与这个首部中列出的相匹配的时候,服务器端会才返回所请求的资源,响应码为  200  。对于其他方法来说,当且仅当最终确认没有已存在的资源的  ETag 属性值与这个首部中所列出的相匹配的时候,才会对请求进行相应的处理。

         对于  GET 和 HEAD 方法来说,当验证失败的时候,服务器端必须返回响应码 304 (Not Modified,未改变)。对于能够引发服务器状态改变的方法,则返回 412 (Precondition Failed,前置条件失败)。需要注意的是,服务器端在生成状态码为 304 的响应的时候,必须同时生成以下会存在于对应的 200 响应中的首部:Cache-Control、Content-Location、Date、ETag、Expires 和 Vary 。

        ETag 属性之间的比较采用的是弱比较算法,即两个文件除了每个比特都相同外,内容一致也可以认为是相同的。例如,如果两个页面仅仅在页脚的生成时间有所不同,就可以认为二者是相同的。

           当与  If-Modified-Since  一同使用的时候,If-None-Match 优先级更高(假如服务器支持的话)。

          以下是两个常见的应用场景:

    • 采用 GET 或 HEAD  方法,来更新拥有特定的ETag 属性值的缓存。
    • 采用其他方法,尤其是  PUT,将 If-None-Match used 的值设置为 * ,用来生成事先并不知道是否存在的文件,可以确保先前并没有进行过类似的上传操作,防止之前操作数据的丢失。这个问题属于更新丢失问题的一种。
     

    转载于:https://www.cnblogs.com/xuzhudong/p/8339853.html

    展开全文
  • ETag/If-None-Match

    2015-07-30 11:29:57
    ETag/If-None-Match则是上文大话中说的第二种check服务端文件是否更新的方式,也要配合Cache-Control使用。实际上ETag并不是文件的版本号,而是一串可以代表该文件唯一的字符串(Apache中,ETag的值,默认是对文件...
  • eTag

    千次阅读 2011-08-01 19:40:06
    etag 客户端缓存 HASH
  • 理解HTTP响应的ETag

    千次阅读 2010-08-25 16:27:00
    使用 Google Page Analysis 和 YSlow 进行网页性能分析,理解 Configure entity tags (ETags) 进行web性能优化。
  • HTTP1.1之ETag

    2019-06-25 17:19:37
    mark 周末补 转载于:https://www.cnblogs.com/chafanbusi/p/10870094.html
  • Etag是什么: Etag 是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等。具体内部含义是使服务器控制的,就像Cookie那样。  HTTP协议规格说明定义ETag为“被请求变量的实体值” 。另...
  • ETag

    2015-10-26 19:52:35
    另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端...
  • Etag

    2018-07-06 12:47:13
    Etag 是URL的Entity Tag,用于标示URL对象是否改变,区分不同语言和Session等等。具体内部含义是使服务器控制的,就像Cookie那样。性能聪明的服务器开发者会把ETags和GET请求的“If-None-Match”头一起使用,这样可...
  • 原文地址 :阅读原文  API为:etag(entity, [options]) ...默认情况下,这个strong etag的产生是不需要fs.Stats的,因为这个fs.Stats会产生weak Etag而不是strong etag,不过这种默认行为可以通过
  • 浅谈ETag

    千次阅读 2011-07-14 10:05:29
    为什么要使用Etag呢?Etag主要为了解决Last-Modified无法解决的一些问题 1、一些文件也许会周期性的更改,但是他的内容并不改变(仅仅改变的修改时间),这个时候我们并不希望客户端认为这个文件被修改
  • HTTP 缓存 之 Etag

    千次阅读 2011-05-05 15:53:00
    Etag编辑词条分享本词条由lclnl创建,共有1位协作者编辑了2次。最新协作者:lclnl。请用一段简单的话描述该词条,马上添加摘要。目录1 Last-Modified和Etags如何帮助提高性能?2 作用3 工作原理4 Apache中Etag实现5 ...
  • 浏览器中的ETag标识

    千次阅读 2018-01-18 09:37:31
    另一种说法是,ETag是一个可以与Web资源关联的记号(token)。典型的Web资源可以一个Web页,但也可能是JSON或XML文档。服务器单独负责判断记号是什么及其含义,并在HTTP响应头中将其传送到客户端,以下是服务器端...
  • 基础知识  1) 什么是”Last-Modified”?  在浏览器第一次请求某一个URL时,服务器端的返回状态会是200,内容是你请求的资源,同时有一个Last-Modified的属性标记此文件在服务期端最后被修改的时间,格式类似这样...
  • Nginx Etag学习

    2019-09-30 14:09:46
    Nginx Etag学习Nginx Etag什么是EtagLast-Modified / If-Modified-SinceEtag工作原理为什么要使用EtagEtag字符含义强Etag和弱EtagEtag丢失问题Etag配置Etag带来的问题 Nginx Etag 什么是Etag Etag其实是一个页面的...
  • 停止Apache阻止ETag

    2019-09-26 14:23:22
    <pre><code>header("ETag: whatever"); </code></pre> <p>Nothing happens. I have heard that it may be Apache blocking the sending of ETags, but I'm not sure. I've done a search for ETag in my apache2....
  • Etag和Expires 性能调优

    2019-06-14 05:26:20
    2019独角兽企业重金招聘Python工程师标准>>> ...
  • HTTP头信息中的参数Etag

    千次阅读 2011-07-14 09:55:11
    服务器如果是集群,不同服务器返回的 Http Header 中的 Etag 参数不一样。如果是图片是程序生成的,我们可以用 no-cache 这些 header 来控制,但如果这些图片是 apache 或 nginx 等呢?...下面开始介绍 Etag:  E
1 2 3 4 5 ... 20
收藏数 40,914
精华内容 16,365
关键字:

etag