ETag负载,不仅在重新加载

时间:2015-01-20 08:50:42

标签: perl caching etag mason

我正在尝试在图像上设置ETag以便使用Perl / Mason进行跟踪。

首先创建一个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时,才会找到correkt ETag并显示在警告中。

我怎样才能获得ETag,这是第一次在每次加载时设置,而不仅仅是重载?

0 个答案:

没有答案