Thread Last-Modified und bei if_modified_since CGI beenden?
(24 answers)
Opened by rosti at 2011-03-30 15:14
Eine kleine Zusammenfassung gebe ich gerne noch hinzu ;)
Sofern das CGI Last-Modified der Ressource serverseitig kennt, gibt es zwei Möglichkeiten: 1. das CGI sendet einfach den Last-Modified Header und der Webserver kümmert sich um den Status 304, sofern ein Solcher vorliegt. Nachteil: Das CGI läuft unnütz weiter. Vorteil: wenig Tipparbeit 2. das CGI kümmert sich selbst um IF_MODIFIED_SINCE und den Status 304. Sofern ein Status 304 vorliegt, sendet das CGI diesen Status an den Webserver und wird beendet. Nachteil: Ein bischen mehr Tipparbeit aber verlässlicher (Vorteil). Ein bischen Code: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 sub mod304{ my $self = shift; my $lastmod = time2str($self->{lastmod}); if( exists($ENV{HTTP_IF_MODIFIED_SINCE}) && ($lastmod eq $ENV{HTTP_IF_MODIFIED_SINCE}) ){ return 'Status: 304 Not Modified'; } else{ return; } } # HTTP::Date::time2str, str2time # in Richtung Webserver: # print "Status: 304 Not Modified\n\n"; # Leerzeile! # exit 0; In meinem customCGI.pm, was von CGI.pm die Methoden erbt, verwende ich dazu eine eigene header-Methode, die CGI::header komplett überschreibt. --Rolf Last edited: 2011-04-04 20:36:40 +0200 (CEST) |