Perl/Mason で追跡するために画像に ETag を設定しようとしています。
最初に作成された etag.m:
<%init>
warn "Start ETag";
my $request_header = $r->headers_in();
my $etag = $request_header->{'If-None-Match'};
warn "Trace Etag: $request_header->{'If-None-Match'}";
unless ($etag) {
warn "Set Etag";
$r->status(302);
$r->headers_out->{'Location'} = "/images/etag.gif";
$r->headers_out->{'Cache-Control'} = 'public';
$r->headers_out->{'ETag'} = $user->{uid};
my $gmt_mtime = HTTP::Date::time2str(time());
$r->headers_out->{'Last-Modified'} = $gmt_mtime;
}
</%init>
これを別のファイル test_etag.m で使用しています。
<img src="etag.m">
キャッシュをクリアした後の test_etag.m の最初の呼び出しで、警告が表示されます。etag は空です。次の呼び出しごとに、警告が表示されないため、画像がキャッシュされていると思います。リロード F5 を実行した場合にのみ、正しい ETag が検出され、警告に表示されます。
リロード時だけでなく、すべてのロードで初めて設定された ETag を取得するにはどうすればよいですか?