Moin pl,
Abgesehen davon dass der Vergleich mit dem Datum in der Serverantwort alles andere als einfach ist, weil die Strings unterschiedlich formatiert sind und daher alles in einen Timestamp umgerechnet werden müsste, was soll denn so ein Vergleich bringen?
ein simples Serverprogramm würde die Zeit der letzten Aktualisierung des Feeds mit dem Wert vom Client vergleichen und bei Ungleichheit den Feed ausliefern, andernfalls einen HTTP-Status 204. Das ist doch nicht so schwierig.
Das Cachen habe ich viel einfacher gelöst: Der ganze Feed wird, sofern so konfiguriert, komplett auf meinem Server gespeichert. Der dem entsprechende Request wird beim Aufruf des Feeds asynchron abgekoppelt, der Feed für den Browser jedoch wird aus der lokalen Datei (oder MySQL) wiederhergestellt. Da wird nur geprüft, ob das cachen konfiguriert ist, wenn ja, gibt es einen DAL (Data Access Layer), untenstehend der Weg in den Cache:
# in Callbackfunktion die das Datum formatiert
# Cache, die items werden gespeichert
my $dal = $self->{DAL} || return $formdate;
$dal->checkin($ts, %$hunt);
return $formdate;
Und dann der Weg der Daten aus dem Cache wieder raus:
$self->{STASH}{feedslice} = $self->eav('file') ? do{
no warnings;
my $dal = $self->{DAL};
my @ents = sort{$b <=> $a}$dal->count;
my @sl = ();
foreach my $e( @ents ){
my $hunt = $dal->checkout($e);
push @sl, $hunt;
}
\\@sl;
} : $self->slicefeed($feed);
$self->{STASH}{feedtitle} = $cfg->{$feed}{title};
MfG