Skip to main content

Snelle CGI

Wat is snelle CGI?

Fast CGI (F-CGI) is een binair netwerkprotocol dat wordt gebruikt als interface tussen een applicatieserver en een webserver. Het netwerkprotocol heeft een soortgelijke functionaliteit als het traditionele Gemeenschappelijke gateway-interface (CGI). Het doel van de ontwikkeling van het Fast-protocol was de prestatieproblemen van CGI te omzeilen en een webprotocol met hoge prestaties te bieden.

[su_list icon=”icon: commenting-o” icon_color=”#187bc0″ indent=”-5″]

Functionaliteit in een oogopslag

De communicatie wordt zowel verbindingsloos als pakketgeoriënteerd met de webserver gerealiseerd. Elk gegevenspakket is voorzien van de volgende informatie in de header:

  • de exacte protocolversie
  • het berichttype
  • de verzoek-ID
  • de lengte van de volgende gegevens
[/su_list]

Onder andere de CGI omgevingsvariabelen kunnen ook worden getransporteerd als onderdeel van een datapakket. De verzoek-ID maakt het mogelijk onderscheid te maken tussen verschillende cliënten, zodat zij gelijktijdig kunnen worden bediend. In tegenstelling tot traditionele CGI, kunnen meerdere clients worden bediend door gebruik te maken van één enkele programma-instance.

Afbakeningen

Zodra een webpagina op basis van CGI wordt aangeroepen, start de verantwoordelijke webserver het proces van de CGI-toepassing en sluit het weer aan het einde van het verzoek. Aangezien in veel gevallen de toepassingen zijn geschreven in een scripttaal, zoals PHP of Perl moet de bijbehorende interpreter bij elke oproep worden geladen. Bij traditionele CGI neemt deze aanroep enige tijd in beslag en duurt vaak langer dan de eigenlijke uitvoering van de toepassing. Het resultaat is een dienovereenkomstig grote overhead.
Een ander probleem met CGI is het feit dat voor elk verzoek van de server een afzonderlijke interpreter moet worden geladen. Als er meerdere aanvragen tegelijk zijn, worden er meerdere kopieën van de interpreter in het geheugen van de server geladen. Dit kan snel leiden tot overbelasting en een crash van het systeem op zwaar belaste webservers.

Minimale overhead

In directe vergelijking met klassieke CGI wordt bij Fast-Common Gateway Interface de uitvoerende toepassing met de interpreter pas bij het eerste verzoek geladen. Daarna kan het worden gebruikt voor de verwerking van verdere verzoeken. Het maakt geen verschil of de verzoeken van dezelfde of verschillende cliënten komen. Een ander onderscheidend kenmerk komt tot uiting in het feit dat de gehele communicatie met de webserver niet via omgevingsvariabelen verloopt. In plaats daarvan worden TCP-netwerkverbindingen of Unix Domein Sockets (UDS) worden gebruikt.
Op systeemniveau is het verschil tussen Fast en klassieke CGI hoofdzakelijk dat de verzoeken in F-CGI worden verwerkt door een centrale lus. Dit functionele principe is zo performant dat het in de loop der jaren door andere webtechnologieën is overgenomen. Het wordt bijvoorbeeld gebruikt in de JavaScript runtime omgeving NodeJS runtime-omgeving. Fast CGI biedt dus betere optimalisatiemogelijkheden, maar vereist in ruil daarvoor een duidelijke en nauwkeurige programmering.

Snelle CGI en dynamische websites

Fast Common Gateway Interface is de voorloper van dynamische websites. Het protocol werd in de eerste plaats ontwikkeld voor gegevensoverdracht op het World Wide Web, en wordt daarom thans beschouwd als verouderd en achterhaald in de context van dynamische websites. In vergelijking met de huidige oplossingen, waarmee betrekkelijk gemakkelijk dynamische websites kunnen worden gemaakt, biedt F-CGI geen voordelen. Dynamische websites gebaseerd op de LAMP-stapels bieden bijvoorbeeld een goede gebruikerservaring en eersteklas prestaties en kunnen bovendien relatief gemakkelijk worden ontwikkeld en onderhouden met de beschikbare hulpmiddelen.

Conclusie

Fast CGI is een performant netwerkprotocol dat gebaseerd is op de webtechnologie Common Gateway Interface en voornamelijk gebruikt wordt als interface tussen de applicatieserver en de webserver.


Heeft u nog vragen?

Neem contact met ons op


Verdere inhoud