如何配置apache或nginx服务器以使用我选择的算法发送Etag标头(即不涉及inode,mtime或size)?有没有其他方法来编译新的C模块?
在Apache,ETags are handled as a core feature中.ETag被计算为多个值的散列.您可以在httpd.conf或.htaccess文件中使用FileETag指令来定义要包含在哈希中的值的条件行为,但正如您所指出的,您的选项仅限于:
> INode – 您提供的特定服务器上的文件的索引节点号
> MTime – 提供文件的服务器的时间戳(以毫秒为单位)
>大小 – 文件大小(以字节为单位)
>全部 – 以上全部
>无 – 以上都不是
如果你想要真正自定义ETag生成,那么你最好不要编写Apache模块.但是,如果您需要快速而肮脏的修复,则可以通过将请求路由到PHP脚本并在脚本中附加Etag标头来生成自己的标记.在httpd.conf或.htaccess文件中,路径可能如下所示:
RewriteCond %{REQUEST_FILENAME} \.png$ # This example looks for .png requests
RewriteRule ^(.*)$/gentag.php?path=$1 [B] # ...and routes them to a PHP script
PHP脚本可能如下所示:
$path = $_GET['path']; // Grab the filepath from GET params
$cont = file_get_contents($path); // Get file contents to hash
$hash = crc32($cont); // Create your own ETag hash however you like
header("Etag: $hash"); // Send the custom Etag header
echo $cont; // Dump the file contents to output
?>
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。