Minulla on ohjelma, jonka tarkoitus olisi hakea jokaisella sivun latauskerralla uusi kuva palvelimelta. Mitenkähän tuon saisi onnistumaan?
Vaikuttaa siltä, että se lataa kuvan useimmiten selaimen välimuistista, aina ei auta edes sivun päivittäminen. Välillä se taas toimii normaalisti, mutta useimmiten ei.
Miten voisi estää kuvan tallentumisen selaimen sivuhistoriaan?
Tiedoston alku on seuraava:
header("Cache-Control:no-cache"); header("Content-Type: image/gif");
Kaipaisin lähinnä tuohon sivulle, jossa tuo kuva haetaan img-tagilla, sopivaa pientä javascript-pätkää. Löytyyköhän sellaista?
Sulla siis tuon satunnaisen kuvan tarjoilee php-skritpi? Laita vaikka aikaleima tuon kuvan parametriksi, se muuttuu joka kerta (tai kerran sekunnissa, mikä kuitenkin riittänee).
mikä sulla on kuvan url?
Laita kuvan urlin perään esim. satunnainen parametri, jolloin selain ei hae kuvaa välimuistista (koska url on eri kuin edellisillä kerroilla)
esim.
kuva.php?v20081101dfsdfr
prkl ajv, hidas minä....
Kiitoksia.
Tuota minä juuri harkitsinkin, mutta epäröin vähän. Kuva-ohjelmassa oli vielä vähän säätöä. Se tarkistaa osoitteen, mistä tuota kuvaa ladataan. Piti saada osoite täsmäämään tietokannassa olevaan urliin.
Alaisvujen query stringit ja url-osoitteen kirjoittaminen pelkällä domainnimellä aiheuttivat häiriöitä.
Itse olen käyttänyt vastaavissa tilanteissa pelkkää kysymysmerkkiä, onko se riittävä? Ainakin omissa sovelluksissa tuo on toiminut.
Eli esim.:
<img src="kuva.php?" alt="" />
trilog: ei ole, koska selaimelle on aivan sama mitä parametrejä tuossa on ja missä muodossa ne on. Jos urli muuttuu, ladataan tiedosto uudelleen mikäli samaista urlia ei vielä välimuistissa ole (tietenkin mukaan tulee vielä erilaiset selain-/käyttäjäkohtaiset yms. välimuistisäännöt ja -asetukset).
Jos siis käytät "kuva.php?" -osoitetta, niin ensitöikseen selain katsoo löytyykö kuva.php? -"nimistä" tiedostoa välimuistista.
Jos kuva vaihtuu esim. vain kerran päivässä, niin tuota aikaleimaa ei tietenkään kannata muuttaa kuin kerran vuorokaudessa. Miksi siis turhaan hidastaa käyttäjille kuvan latautumista (ja samalla kasvattaa turhaan palvelimen tiedonsiirtoa).
En mene takuuseen, mutta muistelen joskus pari vuotta sitten
lukeneeni mozillasta (firefox) että urlit joissa on ? kysymysmerkki
ladataan aina uudestaan kokonaisuudessaan, mutta ei css:sää.
Näin tietokannoissa tapahtuneet päivitykset välittyvät helpommin
Firefoxin käyttäjille. Tämä saattoi olla esim FF 2 version tullessa.
Tässä ohjelmassani tarvitaan muutakin informaatiota syöttää php:lle jotta se tekee halutunlaisen kuvan. Siinä on jopa vaihtoehto, ettei näytetä kuvaa lainkaan, vaan pelkästään käsitellään urlissa oleva muu tieto. Tällöin tiedosto ladataan piilotetussa iframessa.
Pekka Mansikka: onkohan tuo iframe tarpeellinen? Eikös kannattaisi tehdä yksi funktio, joka tekee kaiken tarpeellisen.
Eli
1. Tarkistaa funktion parametrin perusteella tarvitaanko kuvaa ollenkaan
2. Jos kuvaa ei tarvita, ei img-tägiä tulosteta.
3. Jos kuvaa tarvitaan, luodaan väliaikais-hakemistoon kuva, tulostetaan img-tägi ja tulostetaan sen urlikenttään kuvan osoite.
Lebe80 kirjoitti:
Pekka Mansikka: onkohan tuo iframe tarpeellinen? Eikös kannattaisi tehdä yksi funktio, joka tekee kaiken tarpeellisen.
Eli
1. Tarkistaa funktion parametrin perusteella tarvitaanko kuvaa ollenkaan
2. Jos kuvaa ei tarvita, ei img-tägiä tulosteta.
3. Jos kuvaa tarvitaan, luodaan väliaikais-hakemistoon kuva, tulostetaan img-tägi ja tulostetaan sen urlikenttään kuvan osoite.
Noihan se olisi, jos olisi käytössä pelkkää php:ta. Tämä on sellainen, että sen tulisi toimia myös sivuilla, joissa on käytössä pelkkä html.
Miksi sivuilla ei saa olla PHP:ta?
reca kirjoitti:
Miksi sivuilla ei saa olla PHP:ta?
Siksi ettei kaikki ilmaispalvelimet tue sitä.
Jos ei saa käyttää PHP:tä niin miksi viestiketjun aloittaja sitten haluaa PHP-viritelmäänsä apua... jos sitä ei kerran edes saa käyttää? :-/
Aihe on jo aika vanha, joten et voi enää vastata siihen.