Jag har en del kommentarer till föregående inlägg men egentligen så kan folk som inte orkar läsa hela hoppa till de sista tre styckena (Avslutande ord) för de sammanfattar det hela.
Det andra är mest lite meningsskiljaktligheter som kommer ur hur man ser på saker. Där kommer vi alla skilja oss åt lite och möjligtvis inte komma fram till någon gemensam ståndpunkt utan få välja efter eget huvud.
Darren skrev:
Beror på vad du menar med dynamisk. I mina ögon kan en sida vara dynamisk även utan databasinblandning.
Det jag tänkte på var inte i första hand en databas utan att de dynamiska sidorna skapas med ett programmeringsspråk, ofta är det inkluderade filer med makron eller funktioner som används för att generera dynamsiska sidor. Jag har sett alltför många sidor där någon har råkat glömma ett semikolon eller liknande och då sidan inte visats. Visst, klantigt av folk att inte testa, men det är svårare att testa alla fall när man programmerar. Man kanske glömmer att man använde de inkluderade delarna på ett annat sätt på andra sidor och när man ändrar filerna så ter sig förändringarna olika på olika ställen.
Dynamiska sidor bygger på ett beroende, datat ska komma någonstans ifrån. Antingen en databas, en annan server eller en fil på lokal disk. Databasen kan vägra prata med dig, servern kan gå ned och den lokala filen kan ha fått fel rättigheter. Alla tre fallen är självklart saker som man sällan råkar ut för men det är en extra länk i kedjan, vare sig man vill det eller ej.
Men den svagaste länken är ändå programmeraren. Människor gör fel. Gör ett fel i HTML-kod och man ser ofta snabbt att sidan inte ser ut som man förväntar sig, få saker kraschar. Skriv fel i programkod och felet kan uppdagas flera månader senare när du råkar ut för just det specialfallet, då kan killen som ha gjort sidan åkt till andra sidan planeten och man ska hitta någon som ska sätta sig in i det hela igen, kan bli dyrt och tråkigt i extremfallet. Det är inte helt ovanligt att nästa grabb slänger ut allt skrot och börjar om från början (det är en underbart seriös bransch jag lever i :-D )
Dessutom kan man i fallet med enbart statiska sidor använda sig av en totaldum webbserver som inte lider av en massa potentiella säkerhetshål (låt en server exekvera kod och du kan omöjligt eliminera alla säkerhetshål, låt en server bara leverera statiskt data och du kan mycket lättare verifiera att inget oegentligt försigår). Det finns små enkla mycket snabba servrar som är i princip ohackbara, men jättetråkiga då de bara levererar sidor. Både fördel och nackdel beroende på vad du vill ha ut av det hela.
Nåja, det var petitesser egentligen men jag ville ha det sagt bara. Normalt så är det inga större problem med dynamiska sidor, bara potentiella.
Säg t ex att du har en indexsida med fyra länkar. Varje länk skall öppna en ny sida där en bild visas. Ska du bygga detta med statiska sidor så har du 5 html-filer som ligger på servern.
Detta är en klassisk avvägning mellan tid och utrymme. Man kan ofta spara tid genom att använda mer minnesutrymme och vice versa. Om du inte har problem med utrymme (ska du lagra bilder så lär en extra HTML-fil inte vara problemet) så kan du automatgenerera dessa innan du lägger upp dem. Då använder du CPU-cyklerna en gång för det arbetet och sedan kostar det barar i utrymme att ligga på disk och att leverera.
ZPhoto (
http://namazu.org/~satoru/zphoto/) som jag använder gör album på detta sätt. Jag har en mall där jag sätter in layout osv, sen gör ZPhoto grovjobbet och stoppar in allt i mallen och gör alla mina statiska sidor (tillsammans med en fräck flashanimation för att välja bilder, jag som normalt inte är så förtjust i flash

)
Använder du däremot en dynamisk sida och skickar med bildnamnet ihop med länken (QUERYSTRING) så räcker det med 2. I detta fallet belastas inte servern mer än i den statiska exemplet.
Joooo, det gör det väl ändå. Du måste ha en process som tar din querystring och klistrar in det i din mall/template. Det är inte gratis även om det kostar många magnituder mindre än att öppna ett databaskoppel och suga data. Det är inte mycket mer, kostnadsmässigt, än att bara leverera sidan men det kan räcka för att knäcka servrar i kritiska tillämpningar. Dessutom måste datat valideras så att inte vad som helst kommer med i strängen. Helt plötsligt har du en massa programlogik som måste finnas där. Med ett mallbaserat genereringssystem av sidorna kan du "lita" på den som genererar sidorna, men i fallet med dynamiska sidor där datat kommer delvis via besökare måste du ha kollar, annars tigger man om att få sitt system hackat (Se gärna Photo.Nets ratingsystem där någon kom på att man kunde skapa sig ett eget HTML-formulär för att ge ratings. Då kunde man i det formuläret välja högre betyg än 7. Vips och någon hade typ 50039 som medel på 8 ratings :-D )
Detta är enbart en av fördelarna som jag ser det. Du kan lägga t ex en funktion så att användaren kan uppdatera inehållet på sin sida från vilken dator som helst i världen... Plötsligt en fördel till.
Tja, man kan väl se det som en extra fördel, jag ser det som samma sak som ovan. Det är inget nytt att kunna komma åt en dator över nätet på andra sätt än via webben. Jag brukar vanligtvis komma åt den via SSH (har ofta använt Mindbrights SSH-applet för att surfa in på webbservern och få upp ett terminalfönster i min browser från datorer där jag inte önskat installera en SSH-klient). Men det beror på vad du kör på för system. Jag har vuxit upp i Unixvärlden och där är detta vardag. Annars har du DAV till exempel för att hantera detta. Kräver dock programvara på både server och klientsida, men för många är det är det en trevlig lösning. Har aldrig blivit frälst själv dock så någon annan kan få förespråka detta.
Säg att du har byggt din sida statisk och att massa html-filer används. Vad gör du när du ska byta utseendet på sidan?
Jag ändrar i min mall och genererar om sidorna.
Alternativt ändrar jag i det stylesheet som lagrar sidans layout. Bra design bygger egentligen på att sidans innehåll/struktur samt layout separeras. Då kan du till och med ha olika layout för olika typer av användare (dålig syn, små displayer på mobiltelefon etc).
Det finns en intressant artikel på Slashdot.org som heter "Retooling Slashdot with web standards" som visar hur stora vinster man kan göra genom att använda stylesheets på ett korrekt sätt istället för att koda layouten i HTML.
Har du en dynamisk sida så går det mycket fortare att uppdatera den än att gå igenom 10-tals html-filer och ändra i var och en.
En sanning med modifikation. Det är sant att det går snabbare att ändra i en fil än flera, även med min mall så måste jag efteråt generera om sidorna (medan det jobbet fördröjs till första gången någon laddar sidan i det heldynamiska fallet).
Nu vill jag inte att alla hemsidesskapare ska lära sig sed, awk och perl, men om de gjorde det skulle de märka att det bara marginellt mindre jobb att ändra i en fil jämfört med 10, 100 eller 1000. Men återigen, jag är uppväxt i den datormiljön. Jag har även arbetat som systemare i alldeles för många år för att inse att många användare varken vill eller orkar lära sig detta.
Samma svar som ovan. En templatemotor som stödjer att det dynamiska innehållet "cachas" och uppdateras enbart om själva innehållet förändras.
Var cachas sidan? På servern? Då utnyttjar du inte webbläsarens cache-funktion och hela sidan måste skickas över nätet igen. På så sätt slösar du bandbredd.
Webbläsarens cachefunktion lagrar sidan på den lokala hårddisken och om du besöker den igen skickas förfrågan till webbservern "Ge mig sidan X om den inte uppdaterats sedan datum Y". Är det så att sidan inte uppdaterats svarar bara webbservern "sidan var gammal, använd din cachade du". Ett kortare svar och ger snabbare resultat eftersom få personer har en dator där bandbredd och fördröjning på nätverket är bättre än den lokala databussen i datorn.
Men idag bryr man sig inte så mycket om bandbredd så det är inte ett problem tycker folk. Men fråga grabbarna på Photo.Net vad de anser om bandbredd och CPU. Det har blivit en alldeles för populär sajt för att klara den massiva anstormning som sker vissa tider på dygnet. Där vill man gärna spara varje CPU-cykel och bit bandbredd man kan få. Tyvärr kan de inte ersätta allt med statiskt, men då det går kan det vara en bra idé.
Avslutande ord
Tolka mig inte nu som att jag är mot dynamiska sidor, 95% av dem jag skapar är dynamiska, mycket på grund av praktiska skäl. Det är helt enkelt mycket bekvämare och fungerar bättre i många avseenden.
Det jag vände mig mot var att du sade "i alla avseenden bättre". Tyckte det var lite väl generaliserande. Statiska sidor som förgenereras från mallar kan ersätta dynamiska i många fall och kräver mindre av en webbserver. Tyvärr så vill många inte se åt det hållet. Att redigera statiska sidor helt för hand är ett sätt som i mitt tycke bara ska användas om sidorna är så olika att arbetet inte kan automatiseras. Annars är det inget jag förespråkar.
Kontentan är att ibland är dynamiska bättre, ibland statiska. Det man ska fråga sig är "vad behöver jag" och "vad kan de olika alternativen erbjuda". Att dynamiska lösningar erbjuder fler alternativ än statiska är ganska solklart, men det finns många aspekter på det hela. Det är ditt val.