Das Notes Forum

Domino 9 und frühere Versionen => ND7: Entwicklung => Thema gestartet von: chili am 23.05.06 - 09:43:06

Titel: cachen verhindern über http-header
Beitrag von: chili am 23.05.06 - 09:43:06
hallo,

nach ausgiebigen Recherschen im Netz bin ich zu dem Schluss gekommen das folgender Header sowohl im FF als auch im IE, das Cachen verhindern sollte:

Code
@SetHTTPHeader("Expires"; "Sat, 20 May 2006 08:00:00 GMT"); //Zeit aus der Vergangenheit --> Dokument veraltet, wird nicht aus cache geladen
@SetHTTPHeader("Last-Modified";"Sat, 20 May 2006 12:00:00 GMT");
@SetHTTPHeader("Cache-Control";"no-store");
@SetHTTPHeader("Cache-Control";"no-cache");
@SetHTTPHeader("Cache-Control";"must-revalidate");
@SetHTTPHeader("Cache-Control";"max-age=0");
@SetHTTPHeader("Cache-Control";"post-check=0");
@SetHTTPHeader("Cache-Control";"pre-check=0");
@SetHTTPHeader("Cache-Control";"false");
@SetHTTPHeader("Pragma";"no-cache")

Response Headers - http://localhost/chat2.nsf/chat?OpenForm:

Server: Lotus-Domino
Date: Tue, 23 May 2006 07:42:49 GMT
Content-Type: text/html; charset=UTF-8
Content-Length: 2285
Expires: Sat, 20 May 2006 08:00:00 GMT
Last-Modified: Sat, 20 May 2006 12:00:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, max-age=0, post-check=0, pre-check=0, false
Pragma: no-cache
Etag: W/"MTAtODA4NS1DMTI1NzE3NzAwMjYxODczLTAtMA=="

200 OK


Leider funktioniert dies nur im FF. Der IE cached die Daten nach wie vor.
Erwähenswert wäre noch, dass ich einen AJAX-Chat auf Notes Domino Basis entwickelt habe. Der eingegebene Text wird mittels POST über einen Agenten in die DB geschrieben. Ausgelesen wird der Text mittels GET.

Ich habe testweise einen gleichnahmigen chat über apache/mysql laufen. Dort funktioniert dieser Header seltsamerweise sowohl im FF als auch im IE  ???  :-:

// Cachen verhindern, php:
Code
header("Expires: Sat, 05 Nov 2005 00:00:00 GMT");
header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
Weiss jemand einen Rat warum der IE unter Notes Domino weiterhin cachen tut?

Schonmal Danke für Eure Hilfe!
Mathias
Titel: Re: cachen verhindern über http-header
Beitrag von: flaite am 23.05.06 - 11:02:00
Einzige Eklärung, die ich jetzt hätte ist, dass die domino http engine etwas cached.
Titel: Re: cachen verhindern über http-header
Beitrag von: chili am 23.05.06 - 11:52:40
so ich habe nun mit einem page detailer in erfahrung gebracht, dass der header nur in der FORM gültig ist. der aufruf der VIEW,mittels der die nachrichten aus domino ausgelesen werden, wird dagegen wieder gecached.

wie kann man denn der VIEW mitteilen, dass sie das auslesen nicht cachen soll?

die url zur VIEW sieht folgerdermaßen aus:
Code
  var url = '/' + $('WebDBName_').value + '/Messages?ReadViewEntries';

Titel: Re: cachen verhindern über http-header
Beitrag von: m3 am 23.05.06 - 12:03:43
Du kannst ja zu jeder View eine Form definieren, in derem Kontext die View angezeigt wird ($$View Template) ....
Titel: Re: cachen verhindern über http-header
Beitrag von: chili am 23.05.06 - 12:18:00
@m3 wie genau macht man das denn? bin anfänger in notes domino...   :-[

ich hab gerade mal die VIEW als embedded element in die FORM gestellt und den HTTP-HEADER auf no-cache gesetzt... ich weiss jetzt allerdings nicht wie ich über ReadViewEntries auf die embedded VIEW zugreifen soll...
ist mein ansatz überhaupt richtig??
Titel: Re: cachen verhindern über http-header
Beitrag von: m3 am 23.05.06 - 12:25:58
Als Notes-Anfänger solltest Du zunächst mal die Designer-Hilfe lesen. Unter "View Templates" findest Du dort weitere Infos.

Du willst keine embedded Views verwenden, sondern ein $$View Template ersztellen.
Titel: Re: cachen verhindern über http-header
Beitrag von: chili am 24.05.06 - 11:49:50
Habe es mit einem anderen-, einfacheren Ansatz hinbekommen.  Ich übergebe einfach dem Header(beim Aufruf der VIEW)  über 'setRequestHeader' --> 'if-Modified-Since' eine Zeit aus der Vergangenheit und schon wird nicht mehr gecached.  ;D

Trotzdem danke für Eure Hilfe!