Muss nicht: Das Script liefert nur Last-Modified. Und den Vergleich mit if-modified-since macht der Webserver, fertig.
Wie macht er das, wenn lediglich das Script weiß, welche Datei auszuliefern ist?
Mit "nur" meinte ich, dass im Script selbst keine Prüfung der Zeitangaben erfolgt. Außer dem Last-Modified liefert das Script natürlich auch den Inhalt. Der Webserver parst jedoch die gesendeten Header und prüft die Zeitabgaben. Bei Übereinstimmung (if-modified-since == last-modified) sendet der Webserver spontan einen Status 304 Not Modified ohne Message Body, Beispiel untenstehend:
Request
========
my $r = HTTPRequest->common(
host => 'rolfrost.de',
uri => '/pe.html',
method => 'GET',
"If-Modified-Since" => "Sat, 22 Apr 2017 00:00:00 GMT",
)or die $@;
$r->print_rawdata;
Response, nur Header
====================
HTTP/1.1 304 Not Modified
Date: Sat, 22 Apr 2017 13:07:58 GMT
Server: Apache
Connection: close
Expires: Sun, 23 Apr 2017 00:00:00 GMT
Der Expires-Header ist extra zu konfigurieren. MfG