首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Nginx结构全解析(76)

根据请求和响应启用或禁用对代理请求的响应的gzipping。请求被代理的事实由“Via”请求头字段的存在确定。...该指令接受多个参数: off:禁用所有代理请求的压缩,忽略其他参数; expired:如果响应头包含“Expires”字段,其值为禁用缓存,则启用压缩; no-cache:如果响应头包含带有“ no-cache...”参数的“Cache-Control”字段,则启用压缩; no-store:如果响应头包含带有“ no-store”参数的“Cache-Control”字段,则启用压缩; private:如果响应头包含带有...“ private”参数的“Cache-Control”字段,则启用压缩; no_last_modified:如果响应头不包含“Last-Modified”字段,则启用压缩; no_etag:如果响应头不包含...“ETag”字段,则启用压缩; auth:如果请求标头包含“授权”字段,则启用压缩; any:为所有代理请求启用压缩。

46500

HTTP的缓存机制是什么?

缓存标头:HTTP 协议提供了一些特定的缓存标头,如 ETag(实体标签)和 Last-Modified(最后修改时间),用于识别和比较资源的不同版本。...Expires 标头:Expires 标头也用于指定缓存副本的有效时间,但它使用的是绝对时间而不是相对时间。...客户端在后续请求中可以通过发送 If-None-Match 标头将 ETag 发送回服务器,以检查资源是否发生了变化。...服务器根据 ETag 或 Last-Modified 标头来确定资源是否发生了变化,并返回相应的状态码(如 304 Not Modified),以指示客户端使用缓存副本。...5.缓存位置: 浏览器缓存:现代 Web 浏览器会自动缓存资源,包括页面、脚本、样式表和图像等。 代理服务器缓存:代理服务器可以缓存经过它的请求和响应,以减少对源服务器的访问。

38320
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    在Spring Boot中实现HTTP缓存

    一旦确定了HTTP缓存的竞争者,就需要选择合适的方法来管理缓存的验证。HTTP协议定义了几个请求和响应标头,您可以使用它们来控制客户端何时清除缓存。 选择适当的HTTP标头取决于您要优化的特定情况。...客户端根据Last-Modified标头的值设置其值,该标头是与此特定资源的先前响应一起发送的。...Last-Modified vs ETag 正如我已经提到的,Last-Modified标头不太精确,因为它具有一秒的精度。为了获得更高的精度,请选择ETag。...因为ETag计算可能是一项昂贵的操作。 顺便提一下,值得一提的是HTTP协议没有指定用于计算ETag的算法。选择算法时,您应该关注它的速度。...本文重点介绍缓存GET请求,但您应该知道服务器可以使用ETag来同步更新操作。 Spring ETag过滤器 因为ETag只是内容的字符串表示,所以服务器可以使用响应的字节表示来计算其值。

    5.2K50

    对不起,看完这篇HTTP,真的可以吊打面试官

    Content-Encoding Content-Encoding 实体标头用于压缩媒体类型,它让客户端知道如何进行解码操作,从而使客户端获得 Content-Type 标头引用的 MIME 类型。...缓存未占用资源 Etag 标头的另一个典型用法是缓存未更改的资源,如果用户再次访问给定的 URL(已设置Etag),并且该 URL过时,则客户端将在 If-None-Match 标头字段中发送其 Etag...简单请求是满足一下所有条件的请求 允许以下的方法:GET、HEAD和 POST 除了由用户代理自动设置的标头(例如 Connection、User-Agent 或者在 Fetch 规范中定义为禁止标头名称的其他标头...原则 HTTP 条件请求是根据特定标头的值执行不同的请求,这些标头定义了一个前提条件,如果前提条件匹配或不匹配,则请求的结果将有所不同。...下面介绍一下 Etag 如何实现强弱验证。 Etag 响应头是特定版本的标识,它能够使缓存变得更高效并能够节省带宽,因为如果缓存内容未发生变更,Web 服务器则不需要重新发送完整的响应。

    6.4K21

    总结Web应用中常用的各种Cache

    Modified 响应头(http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10.3.5 ),直接用客户端的缓存,而无需在服务器端再生成一次内容...:etag => [@article.cache_key, current_user_favorited] 另外提一个坑,如果nginx开启了gzip,对rails执行的结果进行压缩,会将rails输出的...框架默认使用Rack::ETag middleware,它会自动给无etag的response加上etag,但是和fresh_when相比,自动etag能够节省的只是客户端时间,服务器端还是一样会执行所有的代码...Rack::ETag自动加入etag: curl -v http://localhost:3000/articles/1 Etag: "bf328447bcb2b8706193a50962035619.../abstract/query_cache.rb ),在同一个请求周期内,如果没有update/delete/insert的操作,会对相同的sql查询进行缓存,如果文章类别都是相同的话,真正去查询数据库只会有

    4.7K40

    震惊 | HTTP 在疫情期间把我吓得不敢出门了

    Content-Encoding Content-Encoding 实体标头用于压缩媒体类型,它让客户端知道如何进行解码操作,从而使客户端获得 Content-Type 标头引用的 MIME 类型。...缓存未占用资源 Etag 标头的另一个典型用法是缓存未更改的资源,如果用户再次访问给定的 URL(已设置Etag),并且该 URL过时,则客户端将在 If-None-Match 标头字段中发送其 Etag...简单请求是满足一下所有条件的请求 允许以下的方法:GET、HEAD和 POST 除了由用户代理自动设置的标头(例如 Connection、User-Agent 或者在 Fetch 规范中定义为禁止标头名称的其他标头...原则 HTTP 条件请求是根据特定标头的值执行不同的请求,这些标头定义了一个前提条件,如果前提条件匹配或不匹配,则请求的结果将有所不同。...下面介绍一下 Etag 如何实现强弱验证。 Etag 响应头是特定版本的标识,它能够使缓存变得更高效并能够节省带宽,因为如果缓存内容未发生变更,Web 服务器则不需要重新发送完整的响应。

    5.4K20

    跟我一起探索 HTTP-HTTP缓存

    请注意,某些 CDN 提供自己的标头,这些标头仅对该 CDN 有效(例如,Surrogate-Control)。目前,正在努力定义一个 CDN-Cache-Control 标头来标准化这些标头。...为了解决这些问题,ETag 响应标头被标准化作为替代方案。 ETag/If-None-Match ETag 响应标头的值是服务器生成的任意值。...doctype html> … 如果该响应是陈旧的,则客户端获取缓存响应的 ETag 响应标头的值,并将其放入 If-None-Match 请求标头中,以询问服务器资源是否已被修改: GET /index.html...HTTP/1.1 Host: example.com Accept: text/html If-None-Match: "deadbeef" 如果服务器为请求的资源确定的 ETag 标头的值与请求中的...对于预构建的静态文件生成这些标头很容易。 这里的 ETag 值可能是文件的哈希值。

    28151

    你还在为 HTTP 的这些概念头疼吗?

    通用标头、实体标头、请求标头、响应标头,现在我们来对这几种标头进行介绍 通用标头 HTTP 通用标头之所以这样命名,是因为与其他三个类别不同,它们不是限定于特定种类的消息或者消息组件(请求,响应或消息实体...尽管通用标头不会限定于是请求还是响应报文,但是某些通用标头大部分或全部用于一种特定类型的请求中。也就是说,如果某个通用标头出现在请求报文中,那么大部分通用标头都会显示在该请求报文中。...private 当指定 private 指令后,响应只以特定的用户作为对象,这与 public 的用法相反,缓存服务器只对特定的客户端进行缓存,其他客户端发送过来的请求,缓存服务器则不会返回缓存。...如果没有给定端口号,会自动使用被请求服务的默认端口(比如请求一个 HTTP 的 URL 会自动使用80作为端口)。...ETag 响应头是特定版本的标识,它能够使缓存变得更高效并能够节省带宽,因为如果缓存内容未发生变更,Web 服务器则不需要重新发送完整的响应。除此之外,ETag 能够防止资源同时更新互相覆盖。 ?

    2.4K30

    「HTTP标头」都给你整理好了

    请求标头、响应标头,现在我们来对这几种标头进行介绍 通用标头 HTTP 通用标头之所以这样命名,是因为与其他三个类别不同,它们不是限定于特定种类的消息或者消息组件(请求,响应或消息实体)的。...尽管通用标头不会限定于是请求还是响应报文,但是某些通用标头大部分或全部用于一种特定类型的请求中。也就是说,如果某个通用标头出现在请求报文中,那么大部分通用标头都会显示在该请求报文中。...private 当指定 private 指令后,响应只以特定的用户作为对象,这与 public 的用法相反,缓存服务器只对特定的客户端进行缓存,其他客户端发送过来的请求,缓存服务器则不会返回缓存。...如果没有给定端口号,会自动使用被请求服务的默认端口(比如请求一个 HTTP 的 URL 会自动使用80作为端口)。...ETag 响应头是特定版本的标识,它能够使缓存变得更高效并能够节省带宽,因为如果缓存内容未发生变更,Web 服务器则不需要重新发送完整的响应。除此之外,ETag 能够防止资源同时更新互相覆盖。 ?

    5.8K41

    用 cURL 请求测试 ETag 浏览器缓存

    简而言之,ETag 标识符是一个值,通常是一个散列,代表特定 Web 资源的版本。该资源与 ETag 值一起缓存在浏览器中,并且服务器会在确定特定的缓存资源是否已更改时使用该值。...对于本文,响应体回复的内容对我们而言并不重要。 注意 cache-control 和 etag 标头以及响应代码。...在 Netlify 下,cache-control 标头告诉浏览器缓存资源,但也不信任缓存。这样做是为了使客户端始终尝试获取最新资源。etag 标头代表资源的版本,并随将来的请求一起发送。...,将包含 If-None-Match 标头,其值为前一个请求的 etag 哈希。...在大多数情况下,Web 浏览器将包含适当的标头信息以使用压缩资源,因此在 cURL中,我们必须做一些不同的事。

    1.4K10

    HTTP headers

    IANA还维护建议的新HTTP标头的注册表。 标题可以根据其上下文进行分组: 常规标头适用于请求和响应,但与正文中传输的数据无关。 请求标头包含有关要获取的资源或有关请求资源的客户端的更多信息。...响应标头包含有关响应的其他信息,例如响应的位置或提供响应的服务器。 实体标头包含有关资源主体的信息,例如其内容长度或MIME类型。...Pragma 特定于实现的标头,可能在请求-响应链的任何地方产生各种影响。用于与HTTP / 1.0缓存(向后Cache-Control还不存在标头)的向后兼容性。...这样可以确保特定范围的新片段与先前片段的一致性,或者在修改现有文档时实现乐观的并发控制系统。 Vary 确定如何匹配请求标头,以决定是否可以使用缓存的响应,而不是从原始服务器请求新的响应。...X-Content-Type-Options 禁用MIME嗅探,并强制浏览器使用中提供的类型Content-Type。

    7.7K70

    网页性能优化浅谈与实践

    通常 cache-control 被认为是一种比 expires(到期) 更现代,更灵活的方法,但是两个标头可以同时使用。 Q: 如何进行缓存?...答: 通过标识资源或资源类型(例如图像或CSS文件),然后使用所需的缓存选项指定资源的标头,来启用缓存。...Pragma的值为no-cache时,表示禁用缓存, Expires的值是一个GMT时间,表示该缓存的有效时间。 Tips : expires 标头只是设置内容应在将来的时间。...此后对内容的请求必须返回到原始服务器。使用更新且更灵活的高速缓存控制标头expires标头通常用作备用。 Tips : Pragma 是旧产物,已经逐步抛弃,有些网站为了向下兼容还保留了这两个字段。...Tips : 缓存是提高页面加载速度并从而提高用户体验的可靠且省力的方法。它足够强大,可以为特定的内容类型提供细微差别,但是足够灵活,可以在网站内容发生更改时轻松进行更新。

    60020

    HTTP 304状态码的详细讲解

    Caching选项,然后Fiddler就会:删除所有请求中的条件请求相同的请求头以及所有响应中的缓存时间相关的响应头.此外,还会在每个请求中添加Pragma: no-cache请求头,在每个响应中添加...如果网页自请求者上次请求后再也没有更改过,您应将服务器配置为返回此响应(称为 If-Modified-Since HTTP 标头)。...405(方法禁用) 禁用请求中指定的方法。 406(不接受) 无法使用请求的内容特性响应请求的网页。 407(需要代理授权) 此状态码与 标头字段的请求。 412(未满足前提条件) 服务器未满足请求者在请求中设置的其中一个前提条件。...417(未满足期望值) 服务器未满足”期望”请求标头字段的要求。 5xx(服务器错误) 这些状态码表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。

    8.6K20

    如何在Ubuntu 16.04上使用Nginx的头模块实现浏览器缓存

    为此,必须引入告知浏览器行为方式的新HTTP响应标头。 这就是Nginx的标题模块发挥作用的地方。此模块可用于向响应添加任意任意标头,但其主要作用是正确设置缓存标头。...: "57d40685-400" Accept-Ranges: bytes 在倒数第二行,您可以看到ETag标题,其中包含所请求文件的此特定修订的唯一标识符。...使用Web浏览器时,如果浏览器想要再次请求相同的文件(例如,刷新页面时),ETag则会将值存储并发送回带有If-None-Match请求标头的服务器。 我们可以使用以下命令在命令行上模拟它。...第3步 - 配置缓存控制和过期标头 除了ETag文件验证头之外,还有两个缓存控制响应头:Cache-Control和Expires。...如果设置了这些标头,它们可以告诉浏览器所请求的文件可以在本地保存一段时间(包括永久)而无需再次请求它。

    1.4K30

    如何在CentOS 7上使用Nginx的头模块实现浏览器缓存

    为此,必须引入告知浏览器行为方式的新HTTP响应标头。 这就是Nginx的标题模块发挥作用的地方。此模块可用于向响应添加任意任意标头,但其主要作用是正确设置缓存标头。...: "57f6257c-400" Accept-Ranges: bytes 在倒数第二行,您可以看到ETag标题,其中包含所请求文件的此特定修订的唯一标识符。...使用Web浏览器时,如果浏览器想要再次请求相同的文件(例如,刷新页面时),则会将ETag值存储并发送回带有If-None-Match请求标头的服务器。 我们可以使用以下命令在命令行上模拟它。...第3步 - 配置缓存控制和过期标头 除了ETag文件验证头之外,还有两个缓存控制响应头:Cache-Control和Expires。...如果设置了这些标头,它们可以告诉浏览器所请求的文件可以在本地保存一段时间(包括永久)而无需再次请求它。

    1.5K00

    *当你在浏览器地址栏输入一个URL后回车,将会发生什么事情?*

    DNS查找过程如下: (1)查找浏览器缓存——浏览器会缓存DNS记录一段时间,但问题是操作系统并不会告诉浏览器每个DNS记录的生存时间,因此浏览器会将他们缓存固定的持续时间(2到30分钟不等) (2)查找操作系统缓存...和Accept-Encoding标头); (3)Connection标头要求服务器保持此TCP连接开放以便接下来的请求; (4)请求中还包括针对该域的Cookie,Cookie是键值对,在不同页面请求之间跟踪网站的状态...*URL“http://facebook.com/”中的斜杠很重要,这种情况下浏览器可以安全地添加斜杠,但对于这种形式“http://example.com/folderOrFile”的URL,浏览器无法自动添加斜杠...(浏览器通过各个标头来决定如何解释响应,但也会考虑其他因素,例如URL的扩展); (4)Expires标头指定到期时间。...浏览器知道将特定文件缓存多长时间,因为返回该文件的响应包含Expires标头,此外每个响应还可能包含ETag标头,其作用类似于版本号,如果浏览器看到已具有该文件版本的ETag,它可以立即停止传输。

    2.2K30

    如何让浏览器不缓存文件

    如果响应头有 Etag字段,那么浏览器就会将本次缓存写入硬盘中。...ETag可以保证每一个资源是唯一的,资源变化都会导致ETag变化。服务器根据浏览器上送的 If-None-Match 值来判断是否命中缓存。 ETagHTTP响应头是资源的特定版本的标识符。...否,通过服务器来告知缓存是否可用 「用户行为对缓存的影响」 用户操作 Expires/Cache-Control Last-Modied/Etag 地址栏回车 有效 有效 页面链接跳转 有效 有效 新开窗口...浏览器发现文件名有更改,会重新获取静态资源,达到了不缓存文件的目的。 使用HTML禁用缓存 HTML也可以禁用缓存, 即在页面的head标签中加入meta标签。...该方法不适用于特定文件不缓存的要求。 应用 掌握了以上缓存与不缓存的方式,接下来该进行实战了。

    2.8K30

    【Nginx24】Nginx学习:压缩模块Gzip

    gzip_disable 禁用对具有匹配任何指定正则表达式的“User-Agent”标头字段的请求的响应的 gzip 压缩。...该指令接受多个参数: off 禁用所有代理请求的压缩,忽略其他参数 expired 如果响应标头包含带有禁用缓存值的“Expires”字段,则启用压缩 no-cache 如果响应头包含带有“no-cache...private”参数的“Cache-Control”字段,则启用压缩 no_last_modified 如果响应头不包含“Last-Modified”字段,则启用压缩 no_etag 如果响应头不包含“...ETag”字段,则启用压缩 auth 如果请求标头包含“授权”字段,则启用压缩 any 为所有代理请求启用压缩 官方的解释是 仅将响应压缩到不会在代理服务器上缓存的请求是合理的 ,代理请求主要指的是一些高速缓存服务器或...如果开启的话,就会添加一个上面那样的响应头,告诉缓存代理服务器缓存两种版本的资源:压缩和非压缩的,这有助于避免一些公共代理不能正确地检测 Content-Encoding 标头的问题。

    1.7K22

    HTTP缓存机制的Etag、Last-Modified、If-None-Match和If-Modified-Since、Expires和Cache-Control笔记

    然而,Etag是服务器自动生成或者由开发者生成的对应资源在服务器端的唯一标识符,能够更加准确的控制缓存。...这样就能解释上面一个问题,当响应头既有Last-Modified又有Etag,Etag是多余的吗?...可以通过将Expires HTTP版本1.0标头字段值设置为早于响应时间的时间来进行模拟。Cache-Control相对于Expires更加具体,细致。...它是浏览器告诉服务器和任何中间缓存它想要新资源的一种手段。这个和HTTP / 1.0规范中定义的Pragma:no-cache头字段具有相同的目的。但是,它仅为请求标头定义。...If-Modified-Since如果提供的日期以来尚未更改,服务器不会发送文档的实际内容。 如果文档的ETag仍然与If-None-Match标头的值匹配,则服务器将不发送实际文档。

    2.4K20
    领券