求教cache-control头的控制(影响了自己写的缓存功能了)

redlz2500 2015-10-23 11:18:16
自己做了一个php控制的缓存,依靠etag和文件缓存来处理
如果浏览器发送了etag,则进行对比,etag一致,直接发送304,etag不一致,如果有文件缓存,则直接读取文件缓存,并发送当前服务器缓存的etag
(文件缓存和etag的更新在其他地方处理)

现在突然发现有响应没有返回304,一查,发现这个地址的服务器http响应头返回了cache-control:no-cache
我清空服务器的缓存后看,第一次响应的时候服务器就自动发送了一个no-cache头,(我的etag也发送了出去的),结果就是无论服务器端有没有缓存,浏览器都不会把etag添加到自己的请求头里面去,服务器端处理的时候没有收到etag,就当做是第一次请求,然后又重新读取文件缓存,又重新发送etag……(响应200)

大致是这么回事,但是这样就失去了我想用304来直接缓存的效果了。

看了一下区别,正常的数据,大概10KB,运行一直正常(没有缓存初次请求130ms,有缓存初次请求90ms,之后16ms或以下)
而没有发送304的这个(一直发送no-cache)的这个,数据只有304B,(但是就算不加缓存模块,因为服务器计算的原因,也要花90ms左右),
怀疑是不是因为数据返回不一致的原因而导致的,将这个304B的数据扩增到12KB,还是发送no-cache头,增加到20kb,也是一样的。

然后懵了……不知道怎么回事了。

(天地良心,代码全部是我写的,除了一个header(etag)外绝对没有发送其他的etag了)
...全文
195 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
redlz2500 2015-10-25
  • 打赏
  • 举报
回复
引用 2 楼 fdipzone 的回复:
原因是什么? 为什么会一直发送no-cache呢?估计是服务器设置了吧。
php的session-limit的原因
傲雪星枫 2015-10-23
  • 打赏
  • 举报
回复
原因是什么? 为什么会一直发送no-cache呢?估计是服务器设置了吧。
redlz2500 2015-10-23
  • 打赏
  • 举报
回复
找到原因了……

21,886

社区成员

发帖
与我相关
我的任务
社区描述
从PHP安装配置,PHP入门,PHP基础到PHP应用
社区管理员
  • 基础编程社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧