Thread Last-Modified und bei if_modified_since CGI beenden? (24 answers)
Opened by rosti at 2011-03-30 15:14

rosti
 2011-04-04 20:35
#147373 #147373
User since
2011-03-19
3520 Artikel
BenutzerIn
[Homepage]
user image
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)

View full thread Last-Modified und bei if_modified_since CGI beenden?