You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by eps com estem <gg...@mixmail.com> on 2005/11/07 11:45:43 UTC
ETAG err_header_out
Hi there, i'm just changing the web pages served with my mp2+libapreq2+mod_xslt2, and to
inform that these pages has been modified i was used to use the $r->err_headers_out method
to avoid any caching procedure.
However, something is not working since the HTTP server is responding a 304 not modified
state. Evaluating the HTTP headers i can observe that the problem is the ETAG entity, that
is shown to not to be changed.
If i force the page refresh with the browser (MAJ.+reload) then i get the right page, but
this is something that users doesn't have to known, so it's not a valid solution.
------------------------------
This is the headers i put in the appopiate handler:
$r->err_headers_out->add('Pragma' => "no-cache");
$r->err_headers_out->add('Cache-control' => "max-age=0");
$r->err_headers_out->add('Cache-control' => "no-cache");
$r->err_headers_out->add('Cache-control' => "must-revalidate");
$r->err_headers_out->add('Expires' => "-1");
return Apache2::Const::DECLINED;
------------------------------
This is the HTTP negotation for http://localhost/camandules.info/main.xml
GET /camandules.info/main.xml HTTP/1.1
Host: localhost
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.12) Gecko/20051010
Firefox/1.0.7 (Ubuntu package 1.0.7)
Accept:
text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5
Accept-Language: en-us,en;q=0.5
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 300
Connection: keep-alive
Referer: http://localhost/camandules.info/article_new.xml
Cookie: blogum=blogum#5109514559015945155995555511; blogum_counter_sesion=1;
blogum_counter_pages=main#
If-Modified-Since: Tue, 05 Jul 2005 06:25:08 GMT
If-None-Match: "1bcbb8-ca-25467900"
Cache-Control: max-age=0
HTTP/1.x 304 Not Modified
Date: Mon, 07 Nov 2005 10:46:50 GMT
Server: mod-xslt/1.3.8 Apache/2.0.55 (Unix) mod_apreq2-20050712/2.1.3-dev mod_perl/2.0.1
Perl/v5.8.7
Connection: Keep-Alive
Keep-Alive: timeout=15, max=83
Etag: "1bcbb8-ca-25467900"
Expires: -1
Cache-Control: max-age=0, no-cache, must-revalidate
------------------------------
So the server is not seeing that the docs to be served are actually posterior than july.
Additionally, although changing the ETAG is not a good idea (which value i put?), i tried
it. The ->unset method is not working, and the ->set method is indeed acting as the ->add
method (for example $r->err_headers_out->set('Etag' => "-1");).
In all cases, the etag value is again sended.
Any idea of what can i do to avoid the NOT MODIFIED state?? Thanks!
---------------------------------------------------------
Juega y ll�vate una PS2 two: http://juegos.ya.com/consolas_y_pc/2005/09/concurso-ps2.html
Ya.com ADSL Navega y habla 24h
ADSL Alta Velocidad + Llamadas Nacionales y Locales + Router Wi-Fi + Cuota Alta. Todo por 29,95�/mes+IVA.
http://acceso.ya.com/ADSLllamadas/4mb
Re: ETAG err_header_out
Posted by Geoffrey Young <ge...@modperlcookbook.org>.
> Additionally, although changing the ETAG is not a good idea (which value i put?), i tried
> it. The ->unset method is not working, and the ->set method is indeed acting as the ->add
> method (for example $r->err_headers_out->set('Etag' => "-1");).
>
> In all cases, the etag value is again sended.
try adding this
$r->notes->set('no-etag' => 1);
if it doesn't work from your content handler you might need to move this to
a fixup handler to make sure it's set before apache sends the 304.
--Geoff