gpt4 book ai didi

apache - 在 apache 中有条件地设置缓存头

转载 作者:行者123 更新时间:2023-12-04 00:42:48 26 4
gpt4 key购买 nike

我想根据访问的路径文件有条件地设置缓存头。基本上,访问 http://www.example.com/cache/$cache_key/*应该提供具有远在 future 缓存 header 的文件。

我正在使用重写规则来设置环境变量,然后尝试根据该变量设置缓存控制 header 。但是,似乎变量在过程中设置得太晚了;条件 header 规则永远不会执行。

RewriteRule ^cache/.*?/(.*) /$1 [env=asset:true,L]
Header set Cache-control "max-age=30"
Header set Cache-Control "max-age=31536000" env=asset
Header unset ETag env=asset

有没有更好的方法来做到这一点?我尝试了几种目录和位置块的组合,但没有成功。

最佳答案

使用 phpinfo()我确定在重写的请求中根本没有设置环境变量,所以问题不在于请求的顺序,而是它似乎把变量扔掉了。使用查询字符串而不是 URL 而不是重写似乎是我可以让它工作的唯一方法。我同意,似乎应该有更好的方法。

RewriteCond %{QUERY_STRING} longcache=true(&|$)
RewriteRule .* - [ENV=LONGCACHE:true,L]

Header set Cache-Control "max-age=30" env=!LONGCACHE
Header set Cache-Control "max-age=31536000" env=LONGCACHE

睁开眼睛得到更多不同的答案:

您的 asset环境变量重命名为 REDIRECT_asset在重定向之后,因此您的条件 Header 指令需要是:
Header set Cache-Control "max-age=31536000" env=REDIRECT_asset

关于apache - 在 apache 中有条件地设置缓存头,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7812407/

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