diff -urN ../htmllint.orig/tagslist.cgi ./tagslist.cgi
--- ../htmllint.orig/tagslist.cgi Fri Sep 28 16:00:00 2012
+++ ./tagslist.cgi Sun Sep 30 14:40:00 2012
@@ -79,10 +79,13 @@
($ENV{'HTTP_USER_AGENT'} =~ /iCab/)? 'iCab':
'Mozilla': '';
($USERAGENTVER) = ($ENV{'HTTP_USER_AGENT'} =~ /$USERAGENT\D+(\d+(?:\.\d+)?)/o);
-$gw = ($USERAGENT eq 'MSIE' && $USERAGENTVER >= 4.0)? 'htmllinte.html': 'htmllint.html';
undef $TAGSLIST unless $TAGSLIST && -d $TAGSLIST;
+# タグ一覧キャッシュ使用時は、2回目以降の出力はUser-Agentに関係なく
+# 1回目と同じ内容を出力するので、User-Agentによる内容変更を無効にする。
+$gw = (!$TAGSLIST && $USERAGENT eq 'MSIE' && $USERAGENTVER >= 4.0)? 'htmllinte.html': 'htmllint.html';
+
$gray = '#666666';
$altcolcolor = '#CCFFFF';
$altrowcolor = '#FFFFCC';
@@ -572,6 +575,10 @@
{
unless ($nocgi) {
my $modtime = &time2str($RULETIME);
+ # Vary: User-Agent は、リクエストヘッダの User-Agent: の値によって
+ # 異なる内容(このスクリプトでは$gwの値)を出力していることを表す。
+ # 中間にキャッシュプロクシが介在するときに重要な意味を持つ。
+ print qq|Vary: User-Agent\x0D\x0A| if !$TAGSLIST;
print qq|Last-Modified: $modtime\x0D\x0A|,
qq|Content-Type: text/html; charset=$CHARSET\x0D\x0A\x0D\x0A|;
}