Over Server-side Includes (SSI)

Deze techniek is verouderd. Server-side Includes worden weinig of niet meer toegepast. Op bestaande websites kun je het nog tegenkomen, daarom staat het hier nog.

Als je een webpagina opent, stuurt de server (de host) de betreffende HTML-code naar de bezoeker (de client). De HTML-code staat kant-en-klaar op de server en kan daarom zonder meer worden verstuurd. Er zijn situaties denkbaar waarbij de host eerst iets (of juist heel veel) aan de HTML-code moet aanpassen om de webpagina geschikt te maken voor de gebruiker.

Dit kun je oplossen met Server Side Includes (SSI). Daarmee geef je opdrachten aan de server. De server voert die uit vóórdat ze naar de gebruiker worden verstuurd.

SSI is een onderdeel van CGI, dat staat voor Common Gateway Interface. Dit is een standaard-methode waarmee je scripts en programma's op de server kunt laten communiceren met de browser van de client. Voor het programmeren binnen CGI wordt meestal de taal Perl gebruikt.

Het hangt van de hosting-provider of SSI werkt. Daarbij komt het voor dat niet alle commando's worden ondersteund. Bij een eventuele verhuizing van je website naar een andere provider kan het daardoor gebeuren dat je website geheel of gedeeltelijk niet meer werkt en dus moet worden herschreven.

Vaak is het nodig om de extensie .shtml te gebruiken, in plaats van .html of .htm. Dat is afhankelijk van de instellingen van de host.

SHTML staat voor Server parsed HTML. Dit betekent dat de server eerst het document doorloopt ('parsed'). De shtml-codes worden hierbij vervangen datgene wat er moet komen te staan. Het document wordt pas daarna doorgegeven aan de client.
De codes staan voor de zekerheid tussen commentaar-tags, alhoewel je de codes zelf nooit zult zien, omdat ze tijdens het parsen worden vervangen.

SSI-commando's zien er als volgt uit:
<!--#KEYWORD ATTRIBUUT1="waarde" ATTRIBUUT2="waarde"-->
De attributen zijn optioneel, d.w.z. ze worden alleen gebruikt als ze nodig zijn.

Voor veel van de dingen die je met SSI kunt oplossen zijn equivalenten beschikbaar in JavaScript. Dat werkt dan niet op de server, maar op de PC van de bezoeker, de client dus. In de meeste gevallen is dat voldoende.
Het enige SSI-commando dat hier genoemd wordt (en waarvoor geen JavaScript-equivalent bestaat) is:

code><!--#include file="file.htm" -->

Dit commando kun je gebruiken om het ontstaan van dubbele code te voorkomen. Denk aan het invoegen van een menu op de verschillende bladzijden van een website.
Voor het overige verwijs ik naar onderstaande links:

De SSI-techniek is op zijn retour. Modernere technieken (waarbij de HTML-code vanuit een of meerdere databases wordt gegenereerd) doen het efficiënter en bieden meer mogelijkheden dan SSI.
Merk ook op dat officiële beschrijvingen van SSI op internet sinds ongeveer 1995 niet meer zijn/worden bijgewerkt. Dat geeft aan dat er geen nieuwe ontwikkelingen meer zijn in deze techniek.
Als je echt dynamisch dingen op de server wilt gaan doen kun je beter aan de slag gaan met technieken zoals PHP of ASP.NET, waarin nog volop ontwikkelingen zijn.

Als je deze techniek toch wilt gebruiken moet je eerst uitzoeken of je hosting-provider deze techniek beschikbaar stelt. Dat doe je het handigst met onderstaande code:

<!doctype html>
<html>
<head>
<title>Testen of SSI werkt</title>
</head>
 
<body>
<p>begin test</p>
<!--#echo var="DATE_LOCAL" -->
<p>eind test</p>
</body>
</html>

Sla deze code op in een file test.shtml, upload hem naar de webserver en voer hem uit. Let op de suffix: .shtml in plaats van het gebruikelijke .html. Als de webserver SSI ondersteunt zie je (de test is uitgevoerd op 16 mei 2020):

begin test
 
Saturday May 16 2020
 
eind test

Als de webserver SSI niet ondersteunt ontbreekt de datum.

Als de webserver SSI wel ondersteunt kun je proberen om de suffix te veranderen van .shtml in .html, en daarna de test te herhalen. Als het niet werkt zou je de helpdesk van je provider kunnen raadplegen. Soms kunnen ze voor je instellen dat SSI ook op .html-bestanden werkt.

 
terug

html-212; Laatste wijziging: 16 mei 2020