mbs654321 发表于 2025/8/23 10:52

kangle缓存问题 返回304和源站验证是否过期

想问下小樱,我的需求是这样的:我想让kangle和浏览器都缓存,但每次都向上游发个验证请求看看缓存过期没
然后我现在的操作是,在kangle的回应控制中添加
cache-control: max-age=0,must-revalidate
但好像kangle还是会缓存,然后浏览器验证时返回304,但其实上游已经变了,是我哪里理解有误嘛

我现在在请求控制里又加了个no_cache的flag,不知道有没有效果,但那样的话kangle应该就不会缓存了?

小樱 发表于 2025/8/23 18:57

回应控制添加Cache-Control响应头是告知浏览器不要做本地缓存,例如值为no-cache,此时浏览器就不会缓存

kangle默认就是每次请求都去源站验证缓存是否有更新的,返回304代表无更新,有内容变化则使用200返回,如果缓存设置勾选了"静态化缓存",那么kangle缓存后就不会和源站进行验证

kangle缓存使用last-modified和etag与源站验证,需要检查源站是否输出了对应头部
https://bbs.itzmx.com/thread-19529-1-1.html

mbs654321 发表于 2025/8/23 19:39

小樱 发表于 2025/8/23 18:57
回应控制添加Cache-Control响应头是告知浏览器不要做本地缓存,例如值为no-cache,此时浏览器就不会缓存

...

可我看kangle源码,cache-control应该是影响kangle缓存行为的,它会根据cache control缓存。比如上游cache control返回no-cache它就不走自己缓存了
源站是输出etag的,我测过,但kangle还是给了304

小樱 发表于 2025/8/23 22:27

mbs654321 发表于 2025/8/23 19:39
可我看kangle源码,cache-control应该是影响kangle缓存行为的,它会根据cache control缓存。比如上游cach ...

源码上我看了没有问题的,测试也无法复现,F5一下或者无痕浏览打开后就刷新了缓存
你看错了一段代码,你说的那段代码是在php上输出static标记来通知kangle实现强制缓存
https://bbs.itzmx.com/thread-20335-1-1.html

你先确认下是否是浏览器缓存,还有是否更新文件观察源站last-modified或etag输出值有变化
如果说你删除了文件并没有更新文件,并且此时kangle有开启always_online选项,检测到源站输出404时会进入永久在线常驻缓存

mbs654321 发表于 2025/8/23 23:53

小樱 发表于 2025/8/23 22:27
源码上我看了没有问题的,测试也无法复现,F5一下或者无痕浏览打开后就刷新了缓存
你看错了一段代码, ...

行,我再观察下吧
页: [1]
查看完整版本: kangle缓存问题 返回304和源站验证是否过期