Progettare e realizzare un web server come
Apache HTTP non è sicuramente un compito agevole per qualsiasi programmatore; è quindi utile sapere quali sono le tecniche utilizzate a questo scopo dai progettisti, al fine di avere delle idee da poter riutilizzare per implementare qualche applicazione che gestisca un carico enorme di richieste per una qualche risorsa.
Ricordiamo brevemente quali sono le
operazioni che un web server deve compiere nel trattamento di una richiesta HTTP; per semplicità escludiamo dal discorso la trattazione dei linguaggi
server-side.
Prima di tutto un web server deve
leggere il messaggio di richiesta HTTP proveniente dal client, ed estrapolare da esso l'operazione da compiere (
GET,
PUT, ecc.), e gli header associati che serviranno per costruire il messaggio di risposta; quindi dovrà
tradurre l'URL nel corrispondente nome del file, che contiene la risorsa richiesta, la quale ovviamente dovrà esser presente sul disco del web server.
Quest'ultimo deve controllare se l'utente che ha generato la richiesta è autorizzato ad accedere alla risorsa e infine dovrà
generare il messaggio di risposta HTTP, con l'esito e la risorsa richiesta e i relativi metadati (come la dimensione in byte e il formato).
Nel corso di questa serie di articoli, ci soffermeremo in particolare sulle architetture possibili per realizzare un web server e le varie
tecniche di caching, che sono vitali al fine di avere un web server efficiente.