【问题标题】:Servlet response ETag CacheServlet 响应 ETag 缓存
【发布时间】:2013-12-24 23:12:07
【问题描述】:

我想使用 ETag 来缓存请求的版本并向客户端返回 304 not modified 响应,以便客户端可以使用最后缓存的页面。

所以我的网址是这样的,它返回一个 json 响应

"http://server/WEB_GWT/prmCall?prmName=PRM_SIS_PROG_REG_STATUS"

在我处理这个请求的 servlet 中,我总是将 ETag 信息存储为 url 参数 PRM_SIS_PROG_REG_STATUS 的版本。 所以返回给客户端的响应头是

HTTP/1.1 200 OK
Date: Sat, 07 Dec 2013 16:07:49 GMT
Server: IBM_HTTP_Server
ETag: "5"
Last-Modified: Sat, 07 Dec 2013 16:07:49 GMT
Content-Length: 356
Keep-Alive: timeout=10, max=99
Connection: Keep-Alive
Content-Type: application/json
Content-Language: tr-TR

在我的下一个请求中,我希望此请求标头包含“If-None-Match”标头以返回请求的版本,但我无法获取此标头参数。知道为什么我无法取回我的 ETag。

我的下一个请求头是

 GET /OZU_GWT/prmCall?prmName=PRM_SIS_PROG_REG_STATUS HTTP/1.1
Host: 10.100.199.103
Connection: keep-alive
Cache-Control: max-age=0
If-Modified-Since: Thu, 01 Jan 1970 00:00:00 GMT
User-Agent: Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.57 Safari/537.36
Accept: */*
Referer: http://10.100.199.103/OZU_GWT/
Accept-Encoding: gzip,deflate,sdch
Accept-Language: tr-TR,tr;q=0.8,en-US;q=0.6,en;q=0.4
Cookie: JSESSIONID=0000kvocMBmjoWPbpKt_VAsDUMv:-1

【问题讨论】:

  • 您的 etag 在语法上不正确。它需要有双引号。
  • 我将我的 Etag 更改为双引号,但它仍然返回相同的请求。我更新了我的问题。我不明白为什么我得到最后修改的时间日期 0(即 1970 年......)

标签: http caching servlets smartgwt etag


【解决方案1】:

要缓存您的请求,您需要包含“Cache-Control”指令并指定缓存响应的方式和时间段。

HTTP/1.1 200 正常
日期:格林威治标准时间 2013 年 12 月 7 日星期六 16:07:49
服务器:IBM_HTTP_Server
ETag:“5”
缓存控制:公共,最大年龄=86400
内容长度:356
保持活动状态:超时=10,最大值=99
连接:保持活动
内容类型:application/json
内容语言:tr-TR

这里的 Cache-Control 标头表示内容可以由“公共”缓存服务器存储,并且需要重新验证内容的持续时间为 86400 秒。因此,当您再次刷新页面时,“If-None-Match”和“If-Modified-Since”条件标头将启动并使用缓存数据。

【讨论】:

    【解决方案2】:

    经过一番调查,我发现 SmartGWT 框架请求被发送到带有 bypassCache:true 标志的服务器,该标志发送我的 xhr 请求而没有任何缓存标头。我设法通过覆盖 DataSource 类中的以下方法来修复它。

    @Override
    protected Object transformRequest(DSRequest dsRequest) {
        dsRequest.setBypassCache(false);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-08
      • 2014-08-27
      • 1970-01-01
      • 2015-02-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-27
      相关资源
      最近更新 更多