[PHP/JavaScript]Voorkomen dat een *afbeelding* cached wordt

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 10:14

ElCondor

Geluk is Onmisbaar

Topicstarter
Wel, search gebruikt, internet afgestruind, en geen oplossing kunnen vinden. Ik hoop dat iemand mij kan helpen.
Ik heb een webcam pagina gemaakt, die netjes om de zoveel tijd ververst.
Aan deze pagina heb ik al META headers toegevoegd om te voorkomen dat de pagina in een proxy terecht komt.
Dat geldt echter helaas niet voor de inhoud. Het plaatje dat door mijn webcam netjes ververst wordt blijft in de cache zitten en ik kan tot nu toe niet voorkomen dat deze in de cache komt, en in plaats daarvan iedere keer direct vanuit de webroot gepakt wordt.
Zo blijft het plaatje stilstaan en wordt niet ververst en dat is niet de bedoeling van een webcam pagina, toch? :)

De reden dat ik dit niet met een Java-Applet wil doen, is dat Java Applets niet overal doorheen komen.

Vandaar dat ut JavaScript of PHP moet zijn (ASP en andere talen ken ik helaas niet :( )

Ik ga straks wel weg, dus het kan zijn dat ik even niet reageer. Dat wordt dan morgenmiddag.

Alvas erg bedankt voor de info!

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • 0 Henk 'm!

Verwijderd

Caching Tutorial is altijd een goed begin, het biedt diverse oplossingen.

Je zult op het image bestand zelf cache headers moeten plaatsen, die META headers zijn grappig, maar over het algemeen niet echt effectief.

Je zou bijvoorbeeld het image bestand via php kunnen aanbieden met daarbij de juiste headers en cache informatie, voor meer details daarover zie de php manual.

Hoop dat je hier wat verder mee komt.

Acties:
  • 0 Henk 'm!

  • LinuX-TUX
  • Registratie: December 2003
  • Laatst online: 17-09 13:27
Heb ik ook een voorbeeld van, kzal even de source opzoeken
Gevonden, ik gebruik dit plaatje bij het huiskamer forum "Raad de Plaat" als statistieken scriptje. Deze mag natuurlijk ook niet in caches belanden.

De source:
http://gidelux.homelinux.org/~gideon/GOT/image.phps

Het plaatje:
Afbeeldingslocatie: http://gidelux.homelinux.org/~gideon/GOT/image.php

edit:
LOL, zie net waar ik de nuttige info vandaan heb gehaald, staat ook nog in de source:
PHP:
1
2
    // Anti caching ... weet nog niet of het werkt, gejat uit: 
    // [TOPIC=256578///dynamische%2Cplaatje%2Ccache][NOHTML][rml][ BC3] caching probleem met dynamisch gegener. plaatjes[/rml][/NOHTML][/TOPIC] 

Ik kan bevestigen dat het werkt nu :Y)

[ Voor 105% gewijzigd door LinuX-TUX op 05-10-2005 18:32 ]


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
Mocht je weinig invloed hebben op de bron van het plaatje dan kun je altijd nog een get request met een huidige timestamp toevoegen aan de src. Dat is niet bepaald elegant, maar het werkt wel :)
PHP:
1
$image = '[img]"plaatje.jpg?foo='[/img]';

[ Voor 12% gewijzigd door T-MOB op 05-10-2005 18:46 ]

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • frickY
  • Registratie: Juli 2001
  • Laatst online: 18-09 14:42
Het plaatje via een PHP-script tonen waarin je de headers kunt manipuleren is inderdaad een makkelijke optie.
Maar volgens mij kun je ook de HTTP headers aanpassen vanuit een htaccess bestand. Je zou even moeten uitzoeken of dat inderdaad zo is, maar dat zou een makkelijke methode zijn om dergelijke http-headers voor elk bestand binnen een map te laten gelden

Acties:
  • 0 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 10:14

ElCondor

Geluk is Onmisbaar

Topicstarter
LinuX-TUX schreef op woensdag 05 oktober 2005 @ 18:27:
Heb ik ook een voorbeeld van, kzal even de source opzoeken
Gevonden, ik gebruik dit plaatje bij het huiskamer forum "Raad de Plaat" als statistieken scriptje. Deze mag natuurlijk ook niet in caches belanden.

De source:
http://gidelux.homelinux.org/~gideon/GOT/image.phps

Het plaatje:
[afbeelding]

edit:
LOL, zie net waar ik de nuttige info vandaan heb gehaald, staat ook nog in de source:
PHP:
1
2
    // Anti caching ... weet nog niet of het werkt, gejat uit: 
    // [TOPIC=256578///dynamische%2Cplaatje%2Ccache][NOHTML][rml][ BC3] caching probleem met dynamisch gegener. plaatjes[/rml][/NOHTML][/TOPIC] 

Ik kan bevestigen dat het werkt nu :Y)
Wel, deze META tags bedoel ik dus, dat werkt dus helaas niet...

Dit zorgt ervoor dat de HTML niet opgeslagen wordt, maar wél het plaatje...

En mbt dat generen via PHP, hoe doe je dat dan??

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • 0 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 10:14

ElCondor

Geluk is Onmisbaar

Topicstarter
T-MOB schreef op woensdag 05 oktober 2005 @ 18:44:
Mocht je weinig invloed hebben op de bron van het plaatje dan kun je altijd nog een get request met een huidige timestamp toevoegen aan de src. Dat is niet bepaald elegant, maar het werkt wel :)
PHP:
1
$image = '[img]"plaatje.jpg?foo='[/img]';
Op welke manier roep ik dan die laatste versie aan??

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • 0 Henk 'm!

  • LinuX-TUX
  • Registratie: December 2003
  • Laatst online: 17-09 13:27
ElCondor schreef op woensdag 05 oktober 2005 @ 19:14:
[...]


Wel, deze META tags bedoel ik dus, dat werkt dus helaas niet...

Dit zorgt ervoor dat de HTML niet opgeslagen wordt, maar wél het plaatje...

En mbt dat generen via PHP, hoe doe je dat dan??
:| das knap. Dit zijn de headers van het plaatje zelf he, dus niet van de html pagina. PHP pagina IS gewoon het plaatje.

Let goed hierop:
PHP:
1
header("Content-type: image/png");

Je zet dus een plaatje neer in je HTML pagina (die overigens op zichzelf gecached mag worden) met de code:
HTML:
1
[img]"image.php"[/img]


Overigens werkt ie perfect, let maar goed op de tijd waarop het gegenereerd is.

Als je dan gewoon imagecopy of andere functie gebruikt om dat plaatje van de webcam erbij te plakken, ben je klaar :Y)

[ Voor 4% gewijzigd door LinuX-TUX op 05-10-2005 19:24 ]


Acties:
  • 0 Henk 'm!

  • Robtimus
  • Registratie: November 2002
  • Laatst online: 19:10

Robtimus

me Robtimus no like you

laat maar...

[ Voor 91% gewijzigd door Robtimus op 05-10-2005 20:35 ]

More than meets the eye
There is no I in TEAM... but there is ME
system specs


Acties:
  • 0 Henk 'm!

  • T-MOB
  • Registratie: Maart 2001
  • Laatst online: 16:36
ElCondor schreef op woensdag 05 oktober 2005 @ 19:15:
[...]
Op welke manier roep ik dan die laatste versie aan??
Hoe bedoel je... Het ?foo=timestamp gebeuren zorgt er alleen maar voor dat de URL naar het plaatje elke seconde anders is. Kortom, de browser van de bezoeker "denkt" dat het telkens een ander plaatje is en gebruikt dus geen afbeelding uit zijn cache.

Then again, dit is een weinig elegante oplossing. Beter is de oplossing met HTTP headers. Zo'n oplossing ziet er ongeveer zo uit:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
//we sturen jpeg
header ('content-type: image/jpg');

//no cache headers (zie source van Linux-Tux)

//open de afbeelding $imageFile in binary modus
$fp = fopen($imageFile, "rb");

//stuur de afbeelding naar de browser
fpassthru($fp);

fclose($fp);

Regeren is vooruitschuiven


Acties:
  • 0 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 10:14

ElCondor

Geluk is Onmisbaar

Topicstarter
Man!

Ik heb het nu voor elkaar:
één PHP bestand dat de fotoophaalt.
één PHP bestand die de foto full-screen weergeeft en om de vijf secondes ververst.
één PHP bestand met een frame waar de laatste in weergegeven wordt, en deze hoeft dus niet ververst te worden.
Wellicht niet netjes, maar het werkt!
*zweet_van_zijn_hoofd_veeg-smily*

Bedankt voor de hulp.

Mensen die opzoek zijn naar hoe en wat: dit topic helpt, lees het goed door en gebruik het, en als je er niet uitkomt, mail me dan op scdebaay@hotmail.com.

:)

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)

Pagina: 1