In the earlier days of the web, server-side scripting was almost exclusively performed by using a combination of
C programs,
Perl scripts, and
shell scripts using the
Common Gateway Interface (CGI). Those scripts were executed by the
operating system, and the results were served back by the
web server. Many modern web servers can directly execute on-line
scripting languages such as
ASP,
JSP,
Perl,
PHP and
Ruby either by the web server itself or via extension modules (e.g.
mod_perl or
mod_php) to the webserver. For example, WebDNA includes its own embedded database system. Either form of scripting (i.e., CGI or direct execution) can be used to build up complex multi-page sites, but direct execution usually results in less overhead because of the lower number of calls to external interpreters. Dynamic websites sometimes use custom web application servers, such as
Glassfish,
Plack and
Python's "Base HTTP Server" library, although some may not consider this to be server-side scripting. When using dynamic web-based scripting techniques, developers must have a keen understanding of the logical, temporal, and physical separation between the client and the server. For a user's action to trigger the execution of server-side code, for example, a developer working with classic ASP must explicitly cause the user's browser to make a request back to the webserver. Server-side scripts are completely processed by the servers instead of clients. When clients request a page containing server-side scripts, the application server processes the scripts and returns an HTML page to the client. == Server-side rendering ==