Templatet
Käsitellään edellinen viikkotehtävä ja tutkitaan PHP:n template-mahdollisuuksia. Pohditaan millä tavalla kaikille sivuistoille yhteiset osat voidaan koota yhteen paikkaan.
Luentotaltiointi
- sovellukset19.mp3 15M
- sovellukset19.wmv 40M
- sovellukset19_xvid.avi 101M
Viikkotehtävä 9
Taso 1
- rek.html
- rek.css
- vt9.js
- maat.sql
- haemaanosat.php
- haemaat.php
- onkokotisivu.php
- onkovapaa.php
- tarkistukset.php
Taso 3
Templatet
Yhtenäisen sivusto eri sivuilla on usein samankaltaisia osia, jotka joudutaan jokaisella sivulla liittämään includella tai copy&pastella jokaiselle sivulle. Näitä osia ovat esimerkiksi navigoinnit ja autentikoinnista huolehtiminen. Entäpä jos joltain sivulta tärkeitä käyttäjätarkistus unohtuukin?
Templateilla (eli sivupohjilla) saavutetaan seuraavia etuja:
- Yhteiset osat kootaan samaan paikkaan
- Yhteiset osat liitetään automaattisesti sivulle
- Sivun tekijän tarvitsee keskittyä ainoastaan sisältöosaan
- Voidaan myös pyrkiä erottamaan ohjelmalogiikka esitystavasta.
- Erotetaan SQL:t ja ohjelmakoodit muualle
- Sivun sisällön, ulkoasun ja bisneslogiikan tuottajat voivat tehdä työtä erikseen
- Ei kannata kuitenkaan pyörää keksiä uudelleen - näiden välillä on aina jonkinlaisia kytköksiä
Template-esimerkki
Yhteiset tiedostot:
- .htaccess - määrätää template.tmpl php-tiedostojen käsittelijäksi, .tmpl on php5-skripti itsessään
- testi.php - sivun sisältö, voidaan suorittaa php-komentoja
- pohja.xml - sivupohja, jossa navigoinnit
Sivupohja, joka yhdistää pohja.xml:n ja testi.php:n (tai muun samassa tai alihakemistossa olevan .php-tiedoston) tuottaman XHTML-koodin DOM:n avulla:
Template-pohjaan lisätty autentikointi:
Website Meta Language template-pohjana:
pohja.wmltmpl on sivupohja, johon sopivilla merkinnöillä oleviin kohtiin lisätään index.wml ja omat.wml tiedostojen sisällöt. Pohjassa voidaan käyttää perl-koodia ja .wmlrc- tiedostosta löytyviä muuttujia. Monet template-systeemit perustuvat vastaavanlaisen etsi-korvaa-mekaniikkaan. wml on esiprosessoitava eli näiden tiedostojen pohjalta luodaan staattinen .html-sivu.
Lisätietoa
- PHP Output buffering
- Apache Filter FAQ
- Template-kirjastoja - enemmän tai vähemmän hyödyllisiä
Välimuistit
Välimuistit ovat väliaikaista tallennustilaa, johon WWW-sivu tallennetaan ja josta se voidaan uudelleen ladata. Välimuisteista on hyötyä, koska ne
- Nopeuttavat sivun latautumista
- Vähentävät tietoliikennekaistan kulutusta
Välimuisteja voidaan hyödyntää seuraavasti
- Selaimen ja välityspalvelimen (proxy) välimuistit
- Annetaan sopivat HTTP-vasteessa sopivat otsikkotiedot niin, että sivu tallentuu välimuistiin ja latautuu sieltä
- Cache-control, Last-Modified, Expires ja If-Modified-Since
- Palvelimen sivuvälimuisti
- Aina ei kannata luoda PHP-sivua dynaamisesti uudelleen vaan tallentaa luodun XHTML-version ja tarjoaa sitä
- Yksinkertaisimmillaan voidaan määrittää päivitysaikaväli, jolloin sivu luodaan uudestaan
- Paremmissa ratkaisuissa voitaisiin tutkia esimerkiksi tiedostojen tai tietokantataulujen muutoksia (tutkiminenkin vaatii jonkin verran palvelimelta!)
Cache-esimerkkejä
XML-haku ja kuvan tallennus:
Templatet cachetuksella:
Lisätietoa
- Conditional GET
- Caching with PHP - W3C Mobile Web Initiative
- http_conditional_get_for_rss_hackers
- Cache
- HTTP
- Nopeaa cachea
- Conditional GET

