Je kunt een webpagina op diverse manieren maken. Van oudsher wordt HTML gebruikt om zo'n pagina te maken. In de begintijd moest je een behoorlijke kennis hebben van HTML om iets in elkaar te kunnen zetten. Later werden de zogenaamde WYSIWYG-programma's ontwikkeld, waarbij je op het beeldscherm ziet wat je maakt. De software zorgt er dan voor dat de pagina in HTML wordt opgeslagen.
Een andere manier om een webpagina te maken is door gebruik te maken van CGI.
CGI betekent Common Gateway Interface. Dit staat voor afspraken die gemaakt zijn om in verschillende programmeertalen een script of programma te kunnen maken dat de webserver uitvoert als het door een browser aangevraagd wordt, en waarvan het resultaat naar de browser teruggestuurd wordt.
Hieronder ga ik je uitleggen wat het verschil is tussen deze 2 manieren.
Statische HTML-pagina
Stel, je maakt een webpagina in HTML, genaamd "pagina.html", en je zet deze door middel van een FTP-programma in je "httpdocs"-directory. Dan is die pagina te bekijken via http://www.mijnsite.nl/pagina.html. Elke bezoeker krijgt dan op elk moment dezelfde inhoud te zien. Je zou met JavaScript nog wat dingen kunnen laten veranderen op de pagina, maar echt dynamisch wordt het nooit.

1. De bezoeker typt "http://www.mijnsite.nl/pagina.html" in de browser of klikt op een link die daarnaar verwijst
2. De browser stuurt een aanvraag naar de server voor die url
3. De server stuurt de inhoud van het bestand terug
4. De pagina wordt weergegeven en ziet er meestal hetzelfde uit als bijvoorbeeld gisteren, mits er natuurlijk geen wijzigingen in aangebracht zijn.
Dynamisch CGI-script
Stel dat je nu een CGI-script maakt in de taal PERL, genaamd "script.cgi" en je zet het door middel van een FTP-programma in je "cgi-bin"-directory. Dan is het resultaat van het script te bekijken via http://www.mijnsite.nl/cgi-bin/script.cgi. Voor elke keer dat die url wordt aangeroepen bepaalt het script wat er naar de browser van de bezoeker gestuurd wordt. Door in het script gebruik te maken van externe gegevens, bijvoorbeeld uit een database, kan het resultaat van het script steeds anders zijn, daarom is het een dynamische pagina.

1. De bezoeker typt "http://www.mijnsite.nl/cgi-bin/script.cgi" in de browser of klikt op een link die daarnaar verwijst
2. De browser stuurt een aanvraag naar de server voor die url
3. De server leest het script en voert het uit
4. De server stuurt het resultaat van het script terug naar de browser.
5. De pagina wordt weergegeven en kan er anders uitzien dan bijvoorbeeld 5 minuten geleden; denk aan de datum, de tijd, de weersverwachting, noem maar op. Maar ook een zoekmachine werkt op deze manier.