gpt4 book ai didi

apache - mod_cache + ETag : Apache does not reply 304 to client

转载 作者:行者123 更新时间:2023-12-02 04:58:38 28 4
gpt4 key购买 nike

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

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

初始状态:

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

场景:

  • 浏览器请求/aaa,If-None-Match:123
  • Apache 请求/aaa,If-none-Match:来自 Web 应用程序的 123
  • 网络应用程序返回 304
  • Apache 将他的缓存版本返回给浏览器 (200)

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

附加信息:

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

一个更简单的场景:

  • Apache 版本未过期(ETag:123)- 他不需要从 Web App 获取刷新
  • GET/aaa, If-None-Match: 123
  • 响应:200(而不是 304?)

apache 配置

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

请求/响应 header :

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

最佳答案

根据 protocol specification If-None-Match header 应该用 " 包裹起来。

尝试发送:

If-None-Match: "123"

关于apache - mod_cache + ETag : Apache does not reply 304 to client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115266/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com