`
xzcgeorge
  • 浏览: 32117 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

etag and its filter

阅读更多
from spring 3:

You can re-write it with your requirement

---
So I have in web.xml:

Code:
  <filter>
    <filter-name>pageNotFoundFilter</filter-name>
    <filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
  </filter>

and in my context.xml I have a bean called "pageNotFoundFilter". Very nice !

---

<filter>  
<filter-name>etagFilter</filter-name>  
<filter-class>org.xxx.web.filter.EtagHeaderFilter</filter-class>  
</filter>  

<filter-mapping>  
<filter-name>etagFilter</filter-name>  
</filter-mapping> 


ShallowEtagResponseWrapper responseWrapper = new ShallowEtagResponseWrapper(response);  
filterChain.doFilter(request, responseWrapper);  
 
byte[] body = responseWrapper.toByteArray();  
String responseETag = generateETagHeaderValue(body);  
response.setHeader(HEADER_ETAG, responseETag);  

String requestETag = request.getHeader(HEADER_IF_NONE_MATCH);  
if (responseETag.equals(requestETag)) {  
    if (logger.isTraceEnabled()) {  
        logger.trace("ETag [" + responseETag + "] equal to If-None-Match, sending 304");  
   }  
    response.setStatus(HttpServletResponse.SC_NOT_MODIFIED);  
}  
else {  
    if (logger.isTraceEnabled()) {  
        logger.trace("ETag [" + responseETag + "] not equal to If-None-Match [" + requestETag +  
                "], sending normal response");  
    }  
    response.setContentLength(body.length);  
    FileCopyUtils.copy(body, response.getOutputStream());  
}  
分享到:
评论

相关推荐

    Laravel开发-laravel-etag

    `Response::etag($etag)`方法用于设置`Etag`头,`$etag`通常是资源的哈希值或其他能唯一标识资源的字符串。Laravel还提供了`ETag`中间件,可以自动处理资源的`Etag`验证和缓存响应。 压缩包文件名称`laravel-etag-...

    etag的讲解etag的讲解

    Etag是服务器响应请求时,返回当前资源文件的一个唯一标识,通常是一个字符串,它能反映出资源的修改情况。这个标识允许客户端(如浏览器)在后续请求中通过If-None-Match头来验证资源是否已经改变,从而避免不必要...

    Laravel开发-laravel-etag-middleware

    `Laravel Etag Middleware` 是一个专为提升响应时间和优化资源缓存策略而设计的组件。本文将深入探讨Etag的概念,以及如何在Laravel中利用这个中间件来实现更优秀的性能优化。 Etag,全称Entity Tag,是一种HTTP...

    Laravel开发-laravel-weak-etag-middleware

    2. 添加处理逻辑:在`handle`方法中,获取响应对象,计算资源的弱ETag值,然后通过`$response-&gt;getETag()`方法设置ETag,使用`weak`标志表示它是弱ETag。 ```php public function handle($request, Closure $next) ...

    FLASH COOKIES AND PRIVACY II: NOW WITH HTML5 AND ETAG RESPAWNING

    ETag机制被不道德的开发者利用来进行重生操作,即使用户已经删除了所有cookies或处于私人浏览模式下,也可以通过ETag实现对用户的追踪。 #### 结论 随着时间的推移,追踪技术也在不断发展。尽管Flash cookies在...

    Caching HTTP Headers, Last-Modified and ETag

    相比于 `Last-Modified`,ETag 更加精确,因为它基于资源内容,即使修改时间相同,只要内容变化,ETag就会改变。但这也意味着计算和存储ETag需要更多的服务器资源。 在实际应用中,开发者通常会结合使用 `Last-...

    Http Etag 技术分享

    Etag http If-None-Match If-Modified-Since Last-Modified 使用Demo 已经可以直接使用

    HTTP中的ETag是什么意思,如何使用

    HTTP中的ETag是什么意思,如何使用

    RemETag_去除iis的etag_配置ETag_iis性能优化

    Etags原理:Add an Expires header已经对浏览器缓存机制中的Cache-Control和Expires进行了配置,这一条评测的是另外两个:Last-Modified和ETag。简单的说,即使设置了文件的期限,浏览器在访问资源时也会因为Last-...

    Go-Go的缓存控制中间件添加ETag头(内容的md5)和Cache-Control头

    本篇我们将深入探讨如何使用Go来实现一个缓存控制中间件,特别是关于添加`ETag`头(基于内容的MD5哈希)和`Cache-Control`头。 `ETag`(Entity Tag)是HTTP响应头中的一个字段,用于标识资源的特定版本。它通常是...

    Etag和Expires.docx

    《Etag与Expires:优化页面缓存的策略》 在网页加载速度和用户体验日益重要的今天,有效的页面缓存机制成为了提高网站性能的关键。Etag和Expires是两种常见的HTTP缓存策略,它们各自有不同的工作原理和应用场景。...

    ETag-Session:使用etag实现会话机制

    ETag-Session use etag to realize the mechanism of session 项目采用koa作为web框架 采用Bigpipe实现客户端对服务端事件的订阅 此处只是简单的将数据存储在内存中,并且在多服务集群下未做同步,因为此处的目的是...

    java 文件断点续下载源码及实例 支持Etag HTTP认证用户名密码

    当客户端再次请求同一资源时,可以将上次获取的Etag值发送给服务器,服务器会比较当前资源的Etag是否与之匹配。 1. 请求头If-None-Match:客户端在请求时,将上次获取的Etag值放在If-None-Match头中。 2. 服务器...

    koa-async-etag:异步ETag支持Koa响应

    Koa异步ETag +/-异步版本的 。 :light_bulb: 该中间件是为 v2.xx设计的,并使用来实现ES5兼容性。 :wrench: 该中间件正在开发中。 反馈/公关受到欢迎和鼓励。 如果您想在这个项目上进行合作,请告诉我。 安装 $...

    fastify-etag:自动为 HTTP 响应生成 etag,用于 Fastify

    fastify-etag 一个插件,根据自动生成 HTTP ETag 并在需要时返回 304。 安装 npm i fastify-etag 例子 'use strict' const Fastify = require ( 'fastify' ) const Etag = require ( 'fastify-etag' ) const app =...

    angular-http-etag:AngularJS模块,用于基于ETag的$ http响应的轻松缓存

    缓存ETag标头,并通过If-None-Match标头将它们发送回服务器。 使用灵活的缓存配置来缓存响应数据。 支持$cacheFactory , sessionStorage和localStorage开箱即localStorage缓存。 轻松于其他第三方缓存服务。 与...

    http协议-缓存控制:etag If-None-Match / Last-Modified If-Modified-Since

    本文将深入探讨两个关键的缓存机制:Etag与If-None-Match以及Last-Modified与If-Modified-Since。 1. Etag与If-None-Match: Etag(Entity Tag)是一种用于标识资源版本的机制。服务器在响应头中设置Etag,它通常是...

Global site tag (gtag.js) - Google Analytics