1

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 を取得するにはどうすればよいですか?

4

0 に答える 0