Check out the new USENIX Web site.

Web++ Server Design

The Web++ server is responsible for

The server functionality is implemented by extending an existing Web server with a Java servlet. The current implementation of Web++servlet consists of approximately 24 KB of Java bytecode. The Web++ servlet can be configured as either server or proxy. In the server configuration, the requested resources are satisfied locally either from disk or by invoking another servlet or CGI script. In the proxy configuration, each request is forwarded as a HTTP request to another server. The server configuration can be used if the server to be extended supports servlet API. If the existing server does not support servlet API, it can be still extended with a server-side proxy server that supports the servlet API (such as the W3C Jigsaw server which is freely available).

The viability of the Web++ design depends on the overhead of Web++ servlet invocation. In Figure 7 we compare the average service time of direct access to static resources and access via Web++ servlet. The servlet access includes also the overhead of resource pre-processing. The client and server executed on the same machine6 to keep the impact of network overhead minimal. For the purpose of the experiment, we disabled caching of pre-processed resources described in Section 5.1. We found that the servlet-based access to resources leads to a 13.6% service time increase on average, and 5% and 17.6% increase in the best and worst cases. On average, the increase in service time is 3.9 ms, which is more than two orders of magnitude smaller that the response time for access to resources over the Internet (see Figures 11 and 13). We therefore conclude that even with no caching the Web++ servlet overhead is minimal.

Figure 7: Web++ servlet overhead.