当前位置: 首页 > 知识库问答 >
问题:

mod_cache ETag:Apache未向客户端回复304

傅丁雷
2023-03-14

我对mod_cache和ETags有问题。这是我的场景:

环境:Firefox、Apache 2.2.22(Mac OSX默认)、任何Web App,Apache是Web App的代理

初始状态:

  • 浏览器有一个(过期)缓存版本的doc /aaa,ETag=123
  • Apache有一个(过期)缓存版本的doc /aaa,ETag=123

脚本:

  • 浏览器请求/aaa,如果无匹配:123
  • Apache请求/aaa,如果没有匹配:123来自Web App
  • Web App返回304
  • Apache将其缓存版本返回给浏览器(200)

Apache不应该将304返回浏览器吗?

附加信息:

  • 如果Apache没有 /aaa的缓存版本,他将ETag转发到Web App,获取304,并将304返回到浏览器
  • 使用Last-Modified/If-Modified-From而不是ETags工作(从Web App获取304后,Apache将304返回给浏览器)

一个简单得多的场景:

  • 阿帕奇版本未过期 (ETag: 123) - 他不需要从 Web 应用程序获取刷新
  • 获取 /aaa,如果无匹配:123
  • 响应:200(而不是 304?

apache conf

CacheRoot /private/var/log/apache2/cache/
CacheEnable disk /
CacheDirLevels 5
CacheDirLength 3
CacheIgnoreCacheControl On
CacheIgnoreHeaders Set-Cookie

<Proxy *>
   Order deny,allow
   Allow from all
</Proxy>

ProxyPass / ajp://localhost:8009/ retry=0
ProxyPassReverse / ajp://localhost:8009/
ProxyPreserveHost on

请求/响应标头:

GET / HTTP/1.1
Accept: */*
If-None-Match: 123456

HTTP/1.1 200 OK
Date: Tue, 01 Oct 2013 14:01:16 GMT
ETag: 123456
Expires: Tue, 01 Oct 2013 14:30:55 GMT
Cache-Control: max-age=1800
Content-Language: en-US
Age: 21
Content-Length: 20186
Content-Type: text/html;charset=UTF-8

共有1个答案

艾照
2023-03-14

根据协议规范,If-None-Match 标头应包装为 “.

尝试发送:

If-None-Match: "123"
 类似资料:
  • 问题 你想通过网络提供持续的服务,与客户保持持续的联系。 解决方案 创建一个双向 TCP 客户机。 在 Node.js 中 net = require 'net' domain = 'localhost' port = 9001 ping = (socket, delay) -> console.log "Pinging server" socket.write "Ping"

  • 我已经使用java nio创建了一个客户端-服务器应用程序,它工作正常,但我的问题是,当服务器有许多连接到服务器的客户端时,服务器会响应错误的客户端,而不是请求客户端。例如,如果客户端A请求第一个人的信息,服务器将第一个人的信息返回给客户端B而不是客户端A。我已经尝试同步对象,但仍然无法正常工作,可能是什么问题。这是我的服务器示例代码

  • 问题内容: 我正在通过ElasticSearch NEST C#客户端运行一个简单的查询。通过http运行相同的查询时收到结果,但是从客户端返回的文档数量为零。 这就是我填充数据集的方式: 此POST请求返回JSON结果: 这是我没有返回任何代码的代码。 我想念什么?提前致谢 .. 问题答案: NEST尝试猜测类型和索引名称,在您的情况下,它将使用/ blog / blogentries 因为您告

  • 这非常相似,但我的问题不同:对于非OK响应,返回带有IHttpActionResult的内容 考虑到问题不同,我要求一个更简洁的答案,如果存在的话。 我的架构如下: 对后端控制器的Javascript/jQuery调用 后端控制器调用WebAPI服务。 WebAPI服务查询数据库(etc)并返回数据 我有以下简化代码(网络 API)... 示例1:如果产品id不存在,则返回错误: 示例2如果产品i

  • 基本上,我希望能够有一个shell脚本,比如: 对于oracle,我只需在sql命令的顶部放置。有mysql的等价物吗?在谷歌没有找到任何东西。

  • pom.xml 主应用程序类 Application.Properties eureka客户端设置 pom.xml Application.Properties 我在eureka-server仪表板(http://localhost:8761)中没有看到向Eureka server注册的micro-service-currency-exchange-service 为什么eureka客户端没有注册