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|; }