已经注入了过滤器ShallowEtagHeaderFilter
@Bean
public Filter etagFilter() {
return new ShallowEtagHeaderFilter();
}
但ETag响应头没有生成。
解决过程:
查看ShallowEtagHeaderFilter源代码,发现这个方法:
protected boolean isEligibleForEtag(HttpServletRequest request, HttpServletResponse response,
int responseStatusCode, byte[] responseBody) {
if (responseStatusCode >= 200 && responseStatusCode < 300 &&
HttpMethod.GET.name().equals(request.getMethod())) {
String cacheControl = (responseGetHeaderAvailable ? response.getHeader(HEADER_CACHE_CONTROL) : null);
if (cacheControl == null || !cacheControl.contains(DIRECTIVE_NO_STORE)) {
return true;
}
}
return false;
}
原来ETag的生成需要满足三个条件:
[1]响应状态一定得是2xx
[2]请求方法为GET
[3]响应Cache-Control头部没设置或者不能包含“no-store”指令
那就好办了,再response里制定Cache-Control
response.setHeader("Cache-Control", "no-cache");
分享到:
相关推荐
Go的缓存控制中间件添加ETag头(内容的md5)和Cache-Control头
etag etag
Laravel开发-laravel-etag 支持etag头的laravel ratelimiter。
Laravel开发-laravel-weak-etag-middleware 向HTTP响应头添加弱etags的Laravel中间件
一个插件,根据自动生成 HTTP ETag 并在需要时返回 304。 安装 npm i fastify-etag 例子 'use strict' const Fastify = require ( 'fastify' ) const Etag = require ( 'fastify-etag' ) const app = Fastify ( ) ...
Etag http If-None-Match If-Modified-Since Last-Modified 使用Demo 已经可以直接使用
HTTP中的ETag是什么意思,如何使用
Etags原理:Add an Expires header已经对浏览器缓存机制中的Cache-Control和Expires进行了配置,这一条评测的是另外两个:Last-Modified和ETag。简单的说,即使设置了文件的期限,浏览器在访问资源时也会因为Last-...
Laravel开发-laravel-etag-middleware 一种Laravel中间件,用于向HTTP请求添加etags以提高响应时间
日期时间不同的文件将由IIS生成不同的ETag。 结果,在Web服务器场中,每个文件都针对同一文件发送不同的ETag,因为文件在不同的日期时间复制到了这些服务器。 这是一个脚本,可以将多个服务器上同一文件的日期时间...
ETag-Session use etag to realize the mechanism of session 项目采用koa作为web框架 采用Bigpipe实现客户端对服务端事件的订阅 此处只是简单的将数据存储在内存中,并且在多服务集群下未做同步,因为此处的目的是...
Etag和Expires.docx
提起向百度提交数据,大家基本都会想到sitemap,最近又推出的etag是什么东东?真的能有效果吗? sitemap是解决网站收录至关重要的途径之一,而通常sitemap的更新都不是很及时,并且体量都相对较大,此时也消耗了相应...
Plack :: Middleware :: ETag-...描述Plack :: Middleware :: ETag自动添加一个ETag头。 您可能要与“ Plack :: Middleware :: ConditionalGET”一起使用。 my $app = builder { enable " Plack::Middleware::Condit
主要介绍了HTTP缓存头Last-Modified和ETag介绍,需要的朋友可以参考下
2、静态下Apache、Lighttpd和Nginx中Etag和Expires配置3、非实时交互动态页面中Etag和Expires处理在客户端通过浏览器发出第一次请求某一个URL时,根据 HTTP 协议的规定,浏览器会向服务器传送报头...
Koa异步ETag +/-异步版本的 。 :light_bulb: 该中间件是为 v2.xx设计的,并使用来实现ES5兼容性。 :wrench: 该中间件正在开发中。 反馈/公关受到欢迎和鼓励。 如果您想在这个项目上进行合作,请告诉我。 安装 $...
缓存ETag标头,并通过If-None-Match标头将它们发送回服务器。 使用灵活的缓存配置来缓存响应数据。 支持$cacheFactory , sessionStorage和localStorage开箱即localStorage缓存。 轻松于其他第三方缓存服务。 与...