首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >当客户端发送修改后的自标头时,Apache缓存被禁用

当客户端发送修改后的自标头时,Apache缓存被禁用
EN

Server Fault用户
提问于 2021-06-20 11:42:55
回答 1查看 613关注 0票数 0

我试图让Apache缓存运行昂贵的PHP脚本的结果(它访问具有速率限制的第三方服务器),但是如果客户端发送一个If-Modified-Since头,缓存就被绕过了。

代码语言:javascript
运行
复制
CacheEnable disk /script.php
CacheLock on
CacheLockMaxAge 60
CacheIgnoreHeaders Set-Cookie
# prevent client explicitly requesting un-cached content
CacheIgnoreCacheControl on
CacheDetailHeader on

php脚本在其响应中设置以下标题:

  • Last-Modified设置为当前时间,例如Sun, 20 Jun 2021 11:30:20 GMT
  • Expires设置为当前时间加60秒,例如Sun, 20 Jun 2021 11:31:20 GMT

如果我发出以下请求:

代码语言:javascript
运行
复制
GET /script.php HTTP/1.1
Host: example.com
Connection: close

然后缓存工作正常,而php脚本每分钟只运行一次,而来自缓存的其他请求也只能运行一次。

然而,发出以下请求:

代码语言:javascript
运行
复制
GET /script.php HTTP/1.1
Host: example.com
Connection: close
If-Modified-Since: Sun, 20 Jun 2021 11:30:30 GMT

每次使用以下命令运行php脚本:

代码语言:javascript
运行
复制
X-Cache-Detail: "cache miss: attempting entity save" from example.com

在回应中。

我在Ubuntu18.04上使用Apache2.4.29。

EN

回答 1

Server Fault用户

发布于 2021-06-25 09:29:37

Mod-来自Apache.org

的缓存手册

https://httpd.apache.org/docs/2.4/mod/mod_cache.html

使用自定义日志标识问题

代码语言:javascript
运行
复制
CustomLog "cached-requests.log" common env=cache-hit
CustomLog "uncached-requests.log" common env=cache-miss
CustomLog "revalidated-requests.log" common env=cache-revalidate
CustomLog "invalidated-requests.log" common env=cache-invalidate

启用X细节标头

CacheDetailHeader打开

设置为忽略查询缓存控制字符串

代码语言:javascript
运行
复制
CacheIgnoreCacheControl On
CacheIgnoreQueryString on

使用url.com/my.php?jsessionid=123这样的会话令牌的

不应该缓存,甚至不应该单独缓存

代码语言:javascript
运行
复制
CacheIgnoreURLSessionIdentifiers jsessenionid

使用最小修改因子,未缓存的请求将被传递为0.0 = 0%或1.0 = 100%

代码语言:javascript
运行
复制
CacheLastModifiedFactor 0.99

设置有效缓存的最短时间(默认为0)

代码语言:javascript
运行
复制
CacheMinExpire 3600

在采取行动

之前删除if-Modfied报头。

代码语言:javascript
运行
复制
Header unset Last-Modified 
* Can also be used in htaccess

这是更多的调试在开始,因为它不适合在一个注释,但应该有助于Inc提高任何对象的缓存。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/1067241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档