Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl ETag加载,而不仅仅是重新加载_Perl_Caching_Etag_Mason - Fatal编程技术网

Perl ETag加载,而不仅仅是重新加载

Perl ETag加载,而不仅仅是重新加载,perl,caching,etag,mason,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'}";

我试图在图像上设置一个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是空的。每次下一次调用,a都看不到任何警告,因此我认为图像已缓存。只有在重新加载F5时,才会找到相应的ETag并显示在警告中

我如何获得ETag,它是在每次加载时第一次设置的,而不仅仅是在重新加载时设置的?

这是在使用模块吗?