Den statiske webside skal dø!

Forklaringen på hvorfor jeg aldrig mere i mit liv skal lave eller anbefale andre at lave en statisk hjemmeside.

Hvis man skal lave et moderne, fleksibelt og skalerbart websystem, er der ingen vej uden om et serverbaseret, dynamisk system, hvor siderne ikke skrives som faste HTML-sider, men hvor de sammensættes af forskellige elementer, og skaber siden, når brugeren beder om den.

Herefter sendes den resulterende HTML-kode til brugeren, som i princippet ikke kan se om siden kommer fra en statisk fil eller et dynamisk system.

Statisk <

Statiske sider er, når siderne skrives som HTML-filer i en editor eller et webprogram som FrontPage eller DreamWeaver og gemmes på serverens disk. Når brugeren beder om dem, sendes filerne præcis som de ligger på serveren. Rettelser kræver ændringer i selve HTML-dokumenterne.

Mange statiske sider laves netop i FrontPage, DreamWeaver, NetObjects, GoLive eller lignende programmer, som er af den såkaldte WYSIWYG-type. De kan også kodes direkte i HTML i de samme programmer eller i en editor som Notepad, Stones WebWriter eller Homesite.

Dynamisk <

Dynamisk er når siderne sammensættes af flere forskellige elementer på serveren, som skaber HTML'en, der derefter sendes til brugeren.

Elementerne kan være statiske elementer, centrale fællesmoduler (for eksempel farver og skriftvalg), data fra databaser og forskellige andre informationer, der beregnes eller konstrueres i farten. Dynamiske sider laves ikke i noget bestemt program, men kræver et såkaldt scriptsprog, der er et programmeringssprog beregnet til formålet. De mest kendte sprog er ASP, PHP, Perl og CGI. Disse sprog ligner mere programmeringssprog som C og Basic end de ligner HTML. Deres opgave er at lave beregninger, hente data og meget andet, og i den sidste ende skabe HTML-koden, der skal sendes til brugeren. Siderne og programmerne kan skabes i de samme programmer, som man bruger til statiske websider. Nogle af programmerne har dog flere faciliteter, der retter sig mod programmering end andre.

Dynamisk er simpelthen bedst <

Fordelene ved det dynamiske system er mange:

1) Hurtigere og mere effektiv udvikling <

Udviklingsmæssigt er det mere rationelt. Investeringen i udviklingstid er nok større i starten, hvor basismodulerne laves, men falder drastisk, efterhånden som systemet modnes. Det er således nemt at tilføje nye sider eller nye faciliteter — for slet ikke at tale om at eksperimentere med designet.
Det modsatte gør sig gældende for statiske sider, der er hurtige at lave, men hvor investeringen stiger, og stiger drastisk med antallet af sider.

2) Central vedligeholdelse <

Ændringer kan foretages hurtigt og centralt. Et banalt eksempel er kontaktinformation, for eksempel telefonnumre eller email-adresser, som går igen på mange eller alle sider. I et statisk system skal de ændres på alle sider. I et dynamisk kun ét sted.

3) Relationer mellem data <

Endnu mere komplekst — for ikke at sige umuligt — bliver det hvis man vil lave sider med komplekse sammenhænge, krydshenvisninger, lange lister eller lignende. En ændring i sorteringsrækkefølgen på en liste på en enkelt side kræver en del redigering, og ønsker man at tilbyde brugerne lister med forskellige sorteringer, så skal der fremstilles et dokument for hver sortering.

4) Inddragelse af eksterne data <

Dynamiske systemer kan trække på eksterne data - primært fra databaser, men også fra filer, andre websteder og så videre. I systemer med blot små behov for informationshåndtering, er dette en stor fordel, ikke mindst fordi informationen, som vises på websiderne, opdateres dynamisk.
Når man fremstiller statiske sider, skal disse data hentes og manuelt redigeres ind i siderne. Skulle informationen ændre sig ved kilden, må man hente og redigere igen.

5) Mulighed for webbaseret redigering <

Hvis det yderligere er et ønske eller et krav, at brugerne selv skal kunne opdatere systemet, er der ingen vej uden om, med mindre alle brugere i et vist omfang er i stand til at forfatte HTML eller man ønsker at have en person til at udføre dette arbejde og sørge for vedligeholdelse og koordination af indholdet.

Det dynamiske system tillader nemlig ændringer af og tilføjelser til datagrundlaget, hvilket så vil afspejle sig på siderne. Denne ændring kan ske gennem enkle webbaserede formularer, som bruges via en almindelig browser eller gennem redigering af banale tekstfiler — måder der er nemme at håndtere for brugerne, og ikke kræver særligt kendskab til for eksempel HTML.

Et eksempel <

Et enkelt eksempel på de dynamiske systems fordele:
Der skal være et billede på en side. Billedet ligger på disken. For at indsætte billedet og vise det effektivt, skal der indsættes en IMG-kode med billedets højde og bredde i HTML-koden. På den statiske side gøres dette fast. Billedets størrelse aflæses i et fotoredigeringsprogram eller webprogrammet aflæser det, og lægger det ind i HTML-koden. Koden ser cirka således ud:

<img src="billede.jpg" height="123" width="321">

Der kan være flere oplysninger, for eksempel en alt-tekst, rammetykkelse og så videre.
Billedet vises siden pænt på siden, når den indlæses.

I det dynamiske system kan man for eksempel lave en rutine, der kun skal bruge én oplysning, nemlig billedets filnavn. Rutinen læser så billedets størrelse, og skaber den nødvendige HTML-kode i farten. Rutinen hedder for eksempel vis_billede($filnavn), og kan se således ud:

function vis_billede($filnavn)
   {
   $size=getImageSize($filnavn);
   $size=$size[3];
   echo "<img src=$filnavn $size>";
   }

I eksemplet altså vis_billede("billede.jpg").

Som bruger kan man ikke se forskel på de to, for vis_billede skaber nøjagtigt den samme HTML-kode, som vist i det statiske eksempel ovenfor.

Men skulle vi nu finde ud af at billede.jpg er lidt for småt, eller har vi fundet et bedre billede, som vi lægger ind på serveren, så skal højde og bredde ændres i den statiske udgave.
I den dynamiske skal vi ikke ændre noget. Programmet finder selv størrelsen i farten, og selv om billedet skulle ændre sig dagligt — eller hvert minut — kommer vi ikke til at skulle kode noget om.

Hvis billedet fjernes får vi en blank plet i den statiske HTML-kode, men ved for eksempel at tilføje et forbehold i programmet — if (file_exists($billede)) — så kan vi sikre, at der intet kommer ud, hvis billedet ikke findes.

Yderligere skal billedrutinen kun laves én gang med alle de faciliteter man ønsker, og kan derefter bruges til at vise alle billeder på hele webstedet.

Scriptsprog og database <

Dynamiske systemer laves i ASP, CGI, PHP eller lignende scriptsprog. På Vertikal taler vi for PHP af flere årsager:
  • PHP er et effektivt, kompakt og meget fleksibelt sprog
  • PHP er Open Source, gratis og meget fint i spand med nettets ånd
  • PHP er nemt at integrere med andre teknologier, for eksempel databaser
  • PHP er tilgængeligt til alle servere på alle platforme (i grove træk) og er derfor nemt at flytte
  • Vi kan udvikle bedre i PHP end i nogle af de andre sprog
ASP er et meget udbredt alternativ, men rummer ikke de samme faciliteter, for eksempel objektorientering eller indbygget understøttelse af en lang række databaser. Læs noget om PHP her

Databaser bør stort set uden undtagelse være standard SQL-databaser. MySQL-databasen er et godt bud fordi:

  • Den er en komplet, kompakt og hurtig database — tilstrækkelig til langt de fleste opgaver
  • Den overholder SQL-standarderne og det er derfor nem at benytte og flytte data til og fra
  • Den er gratis (eller i det mindste meget billig)
  • Den er tilgængelig til alle servere på alle platforme (i grove træk)
  • Vi arbejder med MySQL, og kan hurtigt lave løsninger i dette system
Der er alternativer til MySQL. Disse inkluderer SQL-databaser fra PostgreSQL, som er i samme liga som MySQL, til de store som Microsoft SQL Server og ikke mindst den meget dominerende Oracle-database. Læs noget om (My)SQL her
Hele Vertikal.dk, er lavet med PHP og MySQL. Der findes ikke en statisk side på dette websted. Alle sider rummer dynamiske elementer, centrale informationer, tællere, logfunktioner og meget andet, som udgør nogle af vores vigtigste værktøjer til at analysere trafikken og planlægge hvad vi nu skal lave.

Vi sælger skamløst viden og assistance vedrørende