HTTP/2 has brought long-awaited new features to the Web communication scene that was quite stagnant for a while. The server push mechanism is an optional feature of HTTP/2 that enables servers to push additional resources to the clients along with their original request. In theory, this enables faster page load times by saving unnecessary round trips for the additional requests, however, research in this area has uncovered that utilizing an overly aggressive push strategy might end up hurting the overall performance.
Web proxies are commonly used in order to improve the performance of the Web, but HTTP/2 holds even more possibilities in this regard compared to its predecessor: some of the new features are negotiated hop-by-hop (e.g., flow control), while others leave open room for intermediaries to implement their own logic as well. One such example is the previously mentioned server push, which allows proxies to push even more additional resources from their cache.
In this thesis, I argue that by taking information about the networking conditions into account when establishing the push strategy, it is possible to achieve better overall response times. I also present the proof of concept implementation of a proxy that can utilize this contextual information appropriately to change the server push settings of a connection.
After the implementation details, I describe a test environment that can be used to verify the behavior and the performance of the implementation. Based on the results of the testing, I demonstrate that the average page load times were improved by using server push adaptively.