gpt4 book ai didi

apache2 - 自定义 etag 生成

转载 作者:行者123 更新时间:2023-12-02 16:32:48 25 4
gpt4 key购买 nike

如何配置 apache 或 nginx 服务器以使用我选择的算法(即不涉及 inode、mtime 或 size)发送 Etag header ?除了编译新的 C 模块之外,还有其他选择吗?

最佳答案

在 Apache 中,ETags are handled as a core feature 。 ETag 被计算为多个值的哈希值。您可以在 httpd.conf.htaccess 文件中使用 FileETag 指令来定义要包含在哈希中的值的条件行为,但是正如您所指出的,您的选择仅限于:

  • INode - 文件在其提供服务的特定服务器上的 i 节点编号
  • MTime - 提供文件的服务器的时间戳(以毫秒为单位)
  • Size - 文件大小(以字节为单位)
  • 全部 - 以上所有
  • - 以上都不是

如果您想要真正自定义 ETag 生成,那么您最好编写一个 Apache 模块。但是,如果您需要快速修复,则可以通过将请求路由到 PHP 脚本并在脚本中附加 Etag header 来生成自己的标记。在您的 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
?>

关于apache2 - 自定义 etag 生成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7010037/

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