Tämä on varmaan ihan helppo juttu, mutta en osaa sellaista tehdä.
Haluan, että kun kävijä tulee kotisivulleni, päivitetään sivu. Etusivuni sisältö on tehty siten, että jos sivu tallentunut kävijän sivuhistoriaan, kaikki muutokset eivät näy seuraavalla käynnillä. Siis sivu pitäisi päivittää, kun kävijä astuu sivulle, jotta hän näkisi uusimman version sivusta.
Onko tähän olemassa joku valmis koodinpätkä?
Haluan, että kun kävijä tulee kotisivulleni, päivitetään sivu. Etusivuni sisältö on tehty siten, että jos sivu tallentunut kävijän sivuhistoriaan, kaikki muutokset eivät näy seuraavalla käynnillä. Siis sivu pitäisi päivittää, kun kävijä astuu sivulle, jotta hän näkisi uusimman version sivusta.
Onko tähän olemassa joku valmis koodinpätkä?
Vastaukset 10
Vanhimmat
palvelinpäässä voi vaikuttaa.
Jos käyttäjä esim. on jonkun proxyn takana, niin
palvelimesi ei voi edes mitenkään tietää että hän
on hakenut sivun. Se päivittyy vasta sitten kun
proxy jonkun oman aikataulunsa mukaan käy päivttämässä sivujaan.
Ajattelin että tuo onnistuisi php:llä, kun kerran onnistuu sekin, että käyttäjä ohjataan toiseen osoitteeseen (refresh vai mikä nyt olikaan).
php suoritetaan palvelimessa ja html vasta
käyttäjän koneessa (selaimessa).
Voiko tuon kuvaamani tempun tehdä sitten html-kielellä tai javascriptillä?
html-juttuja:
lataa itsensä uudestaan jos laitat tuohon
tämäsivu.html tilalle sivun oikean nimen
Kokeilin, tuo päivittää sivun aina 10 sek välein. onko mahdollista tehdä niin, että se latautuisi vain kerran? Ihan sama, onko se html:ää, javascriptiä vai php:ta, pääasia että toimisi.
Tää on nyt suora lainaus Ari Rantalan kirjasta PHP -web-ohjelmoinnin peruskirja (docendo).
»
Eräs käyttökelpoinen menetelmä välimuistien ohittamiseen on käyttää hyödyksi sitä tietoa, että kaikki välimuistiratkaisut perustuvat URL:ään. Dokumentti tallennetaan välimuistiin siten, että sen tunnistimena on hakupyynnössä käytetty URL. Tätä mekanismia voidaan harhauttaa generoimalla esimerkiksi kyselyosaltaan muuttuva URL siten, että tällä kyselyosan muuttuvalla osalla ei sitten sovelluksessa itsessään tehdä mitään. Jokaisen pyynnön yhteydessä käytetty URL on kuitenkin erilainen, minkä vuoksi mikään välimuisti ei löydä sitä arkistostaan.
Käytännössä tämä voidaan toteuttaa tekemällä Web-sivulle vaikkapa hyperlinkki, jonka kyselyosaan generoidaan esimerkiksi time()-funktiolla joka pyyntökerralla muuttuva arvo:
...skripti.php?tuoreustakuu=1002619954
...skripti.php?tuoreustakuu=1002619956
...skripti.php?tuoreustakuu=1002629954
...skripti.php?tuoreustakuu=1002629958
Esimerkkisovelluksen tapauksessa esim. sivun alkuun voidaan lisätä hyperlinkki:
echo ("Aloita alusta");
joka tulostaa hyperlinkki esimerkiksi muodossa:
missä 1002620006 on time()-funktiona palauttama luku sekunteina vuoden 1970 alusta. Jos linkkiä seurataan harvemmin kuin sekunnin välein, on lähes varmaa saada dokumentti alkuperäisestä paikasta. Huomattakoon, että skripti ei käytä tuoreustakuu-muuttujan arvoa mihinkään.
Erilaiset välimuistit nopeuttavat (dynaamistenkin) Web-dokumenttien lataamista. Usein ei ole mitään tarvetta estää Web-dokumentin hakemista välimuistista - pikemminkin se on toivottavaa.
Tässä kirjassa kuitenkin käytetään edellä esitettyä ratkaisua usein sen vuoksi, että etenkin aloittelevilla Web-ohjelmoijilla olisi jokin luotettava keino ohittaa välimuistit helposti varmistaakseen kulloisenkin sovelluksen tilan.
»
Tätä voit sitten halutessas koittaa soveltaa jotenkin, vaikka tuon nimimerkin "on ihan perus" mainitseman meta http-equivin kanssa.
Miltäs vuodelta tuo kirja on?
Meinaan vaan, että olikos PHP 4.3 josta lähtien register_globaalit oletuksena pois päältä joten $PHP_SELF ei toimine vaan pitää käyttää $_SERVER['PHP_SELF']
Ja PHP 5 on ollut jo yli pari vuotta.
Näyttäis olevan vuodelta 2002. Toimivuudesta en tiiä, kunhan kopsasin kun muistin tuollaisen olemassaolon. Ehkä noiden muiden vinkeistä on enempi hyötyä.
Lisää jokasivun alkuun headeri joka kertoo ettei proxyja jne... käytetä sivullasi. Tällöin sivu haetaan aina palvelimelta eikä proxystä tai selaimen välimuistista.
http://fi.php.net/header esimerkki 6 kokonaisuudessaan.