Philipp Hasenfratz: Zentraler Counter / Einbinden von Dateien von anderen Servern

Beitrag lesen

Halihallo webwurm

mit dem <img> hats jetzt auch funktioniert - allerdings nur ein mal.
jetzt denke ich mir, dass ich vielleicht einige meta-tags setzten sollte:

<%
Response.Buffer=true
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma", "no-cache"
Response.Expires = -1
%>

Genau, das Browser-Caching _muss_ verhindert werden. Sollte so funktionieren.

das funktioniert aber leider trotzdem nicht.

Nun, wie hast du getestet? - Mit dem gleichen Browser, ohne eine neue Browsersession (ich könnte mir vorstellen, dass gewisse M$-Produkte ein Caching sogar dann ausführen, wenn sie es nicht sollten, vielleicht hilft da ein Neustart des Browsers was?). Zumindest habe ich schon einiges "komisches" mit M$ gesehen, was nicht sein dürfte.

außerdem müsste ich den site-namen übergeben, also der <img>-tag würde so aussehen:

Theoretisch könntest du auch den Referer auslesen. Optional mit der Angabe über die URL vergleichen und so "fehlerhafte" oder automatisch generierte Requests (eg. um Statistik künstlich hochzutreiben) nicht beachten.

<img src="http://.../bruken/adminarea/counter_increase.asp?ID=www.bruken.com" width="32" height="32">
leider funktioniert das aber alles nicht.

Ich würde hier noch mit einer Timestamp auf Clientseite arbeiten. Hänge über JavaScript eine Timestamp an die URL an, dann kennt der Brwoser in jedem Fall die URL nicht und holt sie somit direkt vom Server ohne überhaupt cachen zu können. Aber: Nicht nachträglich durch JS ändern, sonst führt jeder Request zu zwei Requests auf das img-Tag (zumindest, wenn das img schon vorher geholt wurde, bevor das JS ausgeführt wurde)! - Also das <img>-Tag ganz durch JS generieren, optinal mit <noscript>-Tag, um Statistik auch bei deaktiviertem JS zu messen.

Also etwa so:

<script src="http://www.statserver.de/tag.js"></script>
<noscript>
   <img src="http://www.statserver.de/statistik.asp?ID=...">
</noscript>

in tag.js hast du stehen:

document.write( '<img src="http://www.statserver.de/statistik.asp?ID=...&r='+escape(Math.rand(1000000)) );

weiss grad nicht ob's Math.rand gibt, einfach eine random-Zahl oder die Timestamp...

Dann müsste es meiner Meinung nach fast nicht cachebar sein.

Viele Grüsse

Philipp