Netscape Cache austricksen ?
Werner
- perl
0 Calocybe
Hallo, ich will in einem Perl-Skript mit folgender Unterroutine GIF's direkt an den Browser schicken:
sub print_gif{
local($content_length);
if ((open(GIF,"<".$result_gif))){
$content_length = (stat (GIF))[7];
print "Content-type: image/gif\n";
print "Content-length: $content_length\n\n";
print <GIF>;
close (GIF);
unlink $result_gif;
}
else{
&return_error(500, "Server Log File Error",
"GIF-Datei kann nicht gelesen werden!");
}
}
Das ganze Skript dient zur Auswertung einer Logdatei. Es erzeugt zwar laufend neue gif's (abhängig von Benutzereingaben in einem Formular), Netscape zeigt bei jedem Aufruf aber immer das gleiche an.
Wenn ich das Bild jedoch wie folgt in einen HTML-Seite einbette , funktioniert das ganze:
sub print_result{
print "Content-type: text/html\n\n";
print "<html>\n<head>\n<meta http-equiv="Pragma" content="no-cache">\n";
print "<meta http-equiv="expires" content="0">\n";
print "</head>\n<body bgcolor=#FFFFFF>\n";
print "<img src ="http://192.168.2.30/result.gif?",time(),"">";
print "\n</body>\n</html>\n";
}
Kann mir irgendjemand sagen, wie die erste Möglichkeit doch noch funktionieren könnte ?
Werner
Hi!
sub print_gif{
local($content_length);
if ((open(GIF,"<".$result_gif))){
Fuer archaische Systeme wie Windows usw. noch:
binmode(GIF); binmode(STDOUT);
$content_length = (stat (GIF))[7];
print "Content-type: image/gif\n";
Hier noch die Cache-Control-Header:
print "Cache-control: no-cache\n";
print "Expires: ", HTTP::Date::time2str(time()), "\n";
# weiter oben use HTTP::Date (); einbinden
print "Content-length: $content_length\n\n";
print <GIF>;
close (GIF);
HTH && So long