1. JJP:n foorumilla sivut eivät tallennu välimuistiin, vaan ne ladataan uudestaan aina kun siirryn sivulle edellinen/seuraava -nappuloiden kautta. Miten saan korjattua?
2. Samaisella sivulla näyttää meinaan aika perhanan rumalta, kun sivulla välähtää CSS-tyyliton versio, kun tyylitiedostoa ei ole vielä ladattu. Onko mahdollista korjata?
Edit: Ja vielä kolmas: Miksi iframe ei mene validaattorista läpi?
PHP-sivut nyt aina luodaan uudestaan, ettei niiden kuulukaan jäädä välimuistiin. Jos ne välimuistittaa liian tehokkaasti, niin sittenhän muutokset eivät välttämättä käy ilmi. Tässä on kiva sivu .htaccess-välimuistittamiseen.
Sinulta ainakin puuttuu type="text/css"
attribuutti link-tageista.
Jos muistan ulkoa oikein, niin IFrame oli aikanaan Microsoftin lisäys, joka taitaa tulla HTML-standardiin vakioelementiksi nyt HTML 5:n myötä.
Kiitoksia.
Toki dynaamisestikin luotuja sivuja kannattaa kakuttaa tilanteen mukaan, sillä vaikka sivu luodaankin dynaamisesti, ei sisältö välttämättä päivity yhtään sen tiheämpään kuin staattisesti luodulla sivullakaan.
http://jjp.jouluserver.com/keskustelu/sections.
Cache-Control no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma no-cache
Eli sivu kertoo headereillaan selaimelle, ettei sisältöä saa välimuistittaa, vaan se pitää ladata joka kerta uudelleen.
Välimuistitus toimii parhaiten vain jos sen tekee PHP:n puolella, eli sen sijaan että kaikki tietokantakutsut tehdään uusiksi niin mahdollisimman moni niistä lykätään esim. tekstitiedostoon. Foorumilla muuttujia on kuitenkin paljon: käyttäjien nimet saattavat vaihtua, käyttäjä saatetaan poistaa, viestejä saatetaan muokata tai poistaa jne. ja kaikki tämä pitää huomioida välimuistittamisessa. Lisäksi sivulla saattaa olla käyttäjäkohtaista muuttuvaa tietoa, mm. listaus sillä hetkellä sisäänkirjautuneistä käyttäjistä tai viesteissä on seuranta siitä, mitkä niistä on luettu ja mitkä ei.
Näillä aatoksin PHP-sivun välimuistittaminen selaimen toimesta on käytännössä lähellä järjetöntä. Sivuhan ladataan usein juuri sen takia, että nähdään onko muutoksia tapahtunut.
IMO on vielä järjettömämpää kakuttaa tietokantahaun tuloksia tiedostoihin ja näin heikentää järjestelmän suorituskykyä. Hyvin toimiva tietokanta pitää kuitenkin useimmiten tarvitut tiedot muistissa.
Tietenkin jos järjestelmä on huonosti suunniteltu, eli tietokantakyselyt ovat raskaita, niin silloin voi olla järkevää kakuttaa niitä. Mutta tässäkin tapauksessa lähtisin ennemmin purkamaan sitä huonoa suunnittelua kuin rakentamaan purkkaviritystä ongelman kiertämiseksi.
Kyllä nyt css-tiedosto voi välimuistiin tallentua, vaikka kuinka muuttuva sisältö olisikin... Tietenkin jos css-tiedosto luodaa php:llä ja se saattaa muuttua sivuston eri sivuilla, johon en kyllä näe tarvetta.
Edit: Tosin ei kukaan sitä tainnutkaan kieltää.
Totesin CSS-tiedoston luonnin PHP:lla jossain vaiheessa typeräksi, lähinnä saatuani lisää tietoa välimuistituksesta .htaccessin voimin. Nykyisin kun päivitän CSS-tiedostoa, niin annan sille päivämäärän tiedostonimeen ja heitän PHP-templaattiin tiedon uudesta tiedostosta. CSS-tiedostolla on 10 vuoden välimuistitus per versio, joten muutoksien sattuessa on pakko vaihtaa tiedoston nimeä, muuten muutokset eivät näkyisi käyttäjille.
Grez: omassa tapauksessani webhotellin tietokantapalvelin on jatkuvasti sen verran käytössä, että tekstitiedoston lukeminen on paljon nopeampaa. Toisaalta siellä on myös hitaampi kutsu, mutta koska se koskee mainitsemaani viestien merkkautumista luetuksi (eikä se ole omaa koodiani), niin joutuisin kirjoittamaan valtavasti järjestelmää uusiksi saadakseni sen toimimaan nopeammin. Sivutila on kuitenkin tarjottu täysin ilmaiseksi käyttööni, joten en voi nipottaa. Välimuistin lisäys yhdelle sivulle oli riittävä ja nopeahko ratkaisu, sivun luontiaika laski noin 0,7 sekunnista sellaiseen 0,1 sekuntiin.
Merri: vaihdatko ihan koko nimeä?
Itsellä on tapana heittää tiedoston nimen perään parametrejä, jotka muodostuvat juuri muokkauspäivämäärän mukaan. esim. style.css?v.20090111-0010 (tai yleensä pelkän timestampin mukaan)
Jep, teen kokonaan uuden tiedoston: <link href="/ulkoasu/2009-11-25.css" media="screen,projection" rel="stylesheet" type="text/css" />
Säilyypähän vähän versiohistoriaakin samalla, vaikka siltä varalta että poistan jotain ja sitten myöhemmin huomaan poistaneeni liikaa.
Aihe on jo aika vanha, joten et voi enää vastata siihen.