stale-while-revalidate 和 stale-if-error 在 Squid 2.7 中无法协同工作

stale-while-revalidate 和 stale-if-error 在 Squid 2.7 中无法协同工作

重新验证时过期错误时失效在 Squid 2.7 中无法协同工作,如下所示:

http://www.igvita.com/2009/08/05/masking-latency-failures-with-squid/

squid 正在使用下列配置运行:

http_port 80 accel defaultsite=mydomain.com
cache_peer 127.0.0.1 parent 8000 0 no-query originserver name=main
httpd_suppress_version_string on
header_access Cache-Control deny all
cache_effective_user squid
negative_ttl 5 seconds

在端口 8000 的后端 php+apache 服务器中我返回此内容:

<?php

// trigger_error("Throw error 500", E_USER_ERROR");

header('Cache-Control: max-age=10, stale-while-revalidate=20 stale-if-error=20');
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

sleep(2);

die("OK");

当我取消注释trigger_error时,如果我发送重新验证时过期然后客户端收到错误,如果我发送下一个错误,stale-if-error 将按预期工作:

<?php

trigger_error("Throw error 500", E_USER_ERROR");

header('Cache-Control: max-age=10, stale-if-error=20');
// Next one don't works
// header('Cache-Control: max-age=10, stale-while-revalidate=20 stale-if-error=20');
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");

sleep(2);

die("OK");

答案1

这是 squid-2.7-stable7(包括此版本)之后出现的错误。我在下一个链接的 squid bugzilla 中添加了此错误:

http://bugs.squid-cache.org/show_bug.cgi?id=3671

squid-2.7-stable6 按预期工作。

相关内容