当浏览器请求以下 URL 时,我尝试设置缓存控制标头:
www.example.com/php/getData.php?exampleField=exampleValue
因为即使 getData.php 是一个动态页面,当参数exampleField
等于时exampleValue
响应也不会改变。因此,浏览器没有理由不缓存此结果。我的问题是如何FilesMatch
在 .htaccess 文件中编写规则以匹配此规则,我尝试了以下方法,但没有成功:
<FilesMatch "php/getData.php\?exampleField=(exampleValue1|exampleValue2)$">
Header set Cache-Control "max-age=3024000, must-revalidate"
</FilesMatch>
答案1
GET 参数不是文件名的一部分,因此<FilesMatch>
不会匹配它们。
假设您正在提供一个 PHP 文件,您是否考虑过简单地在那里添加缓存控制标头?
<?php
/* ... */
if (
@isset( $_GET['exampleField'] ) &&
$_GET['exampleField'] == 'exampleValue'
) {
header('Cache-Control "max-age=3024000, must-revalidate"');
}
/* ... */
?>