“Web project performance” is, from the user's point of view, the speed at which pages are loaded and displayed by the browser. What gives the increase in the speed of a certain site? In fact - a lot of things. Here, and increasing sales, and increasing customer loyalty, and improving user experience from working with the resource. The speed with which a web resource responds to requests is especially important for those users who sit on slow communication channels or surf the web from smartphones or tablets.
Communication channels, devices and user browsers - the site owner cannot influence all this. Among what he can do is an increase in the speed with which the information requested from the outside leaves the server. To improve the performance of web projects using different methods. Here are some of them:
- Server side caching
- Client side caching.
- Use faster disk drives.
- Image optimization.
- Using accelerator applications aimed at optimizing caching and data compression.
- Load balancing and SSL offloading.
- Load balancing based on geographic data or DNS information.
In a nutshell, you can reduce the time it takes to display a page in a browser using multi-level system caches and setting up asynchronous operation of server components.
')
In this post, I’ll talk about my favorite open source tools that speed up web-based solutions.
Varnish - HTTP Accelerator
Varnish Cache is a web application accelerator. It is installed in front of any web server that uses HTTP and is configured to cache content. Varnish aims to optimize caching and data compression, which allows you to speed up the work of sites.
Varnish is a really quick tool. It is used by many high-load projects. Among them - Wikipedia, Facebook, Twitter. The creators of Varnish talk about 20 Gbps on standard server hardware.
HAProxy - proxy server and load balancer
HAProxy is a software tool designed for load balancing, SSL offloading, web performance optimization, data compression, and routing.
This project is used by some well-known sites, such as GitHub and Reddit. He is involved in OpsWorks from Amazon Web Services. I have seen how HAProxy normally holds a load of 15,000 to 30,000 requests per second and loads the 2 Gbps channel to capacity without a problem. There is evidence that HAProxy will find something to take and 10-gigabit communication line.
Squid - caching proxy server
Squid is a caching proxy server with HTTP traffic redirection features for web projects, supporting HTTP, HTTPS, FTP, and other protocols. It reduces bandwidth requirements and improves server response times by caching and reusing frequently requested pages.
Squid has a wide range of settings and is an excellent server accelerator. It is suitable for both LAN and WAN projects. Often in the complex server software LAMP Squid is used to organize web cache. This is a high-performance solution that ensures high project availability in a hostile environment.
Nginx - reverse proxy server, load balancer, HTTP cache and web server
Nginx is a free web server that can act as a reverse proxy server, load balancer, SSL unloader and HTTP cache. Nginx is recognized as the second widest web server among all existing sites. Nginx was created with the aim to surpass the Apache web server in speed
Vulcand - load balancer
Vulcand is a reverse proxy aimed at speeding up the work of the API and microservices. The inspirer of this project is Hystrix. As a configuration subsystem, it uses Etcd, so changes in settings have an effect immediately, without the need to restart the service. The project is in a state of active development.
Træfɪk - reverse HTTP proxy and load balancer
Træfɪk is a modern reverse HTTP proxy and load balancer designed to simplify the deployment of microservices. For its dynamic and automatic configuration, you can use support systems such as Docker, Swarm, Kubernetes, Marathon, Mesos, Consul, Etcd, Zookeeper, BoltDB, Rest API, files.
Relayd - load balancer, application level gateway, transparent proxy, SSL / TLS gateway
The
relayd project is a free implementation of a secure web engine that consists of relayd and httpd.
For the first time, relayd appeared in OpenBSD 4.1, it played the role of a service that helped organize server load balancing (Server Load Balancing, SLB) using an OpenBSD packet filter (Packet Filter, pf). It was written by Pierre-Yves Richard and Rake Floter. The HTTP server, httpd, appeared in OpenBSD 5.6 and was based on the relayd code. Its developers are Rake Floter, Sebastian Benoit, Florian Obsser and various OpenBSD enthusiasts.
Relayd is used by some large sites, and it is also ported to various operating systems.
Results
Here, for convenience, brief information about the above web accelerators with some additional information about them.
Project
| Tongue
| OS
| Main features
| License
| Commercial support
|
Varny
| C
| BSD, Linux, Unix
| HTTP accelerator
| 2-clause BSD
| Yes
|
Haproxy
| C
| BSD, Linux, Unix, Aix, Solaris
| TCP and HTTP accelerator, load balancer, proxy server
| GPL v2
| Not
|
Squid
| C / C ++ (Squid 3)
| BSDs, Solaris, Linux, OS X, Windows
| Web cache and proxy server
| GPL v2
| Not
|
Nginx
| C
| Linux and Unix-like systems, BSD, Windows
| Reverse Proxy, Load Balancer, HTTP Cache
| 2-clause BSD
| Yes
|
Vulcand
| Go
| Linux and Unix-like
| Load balancer
| Apache v.2
| Not
|
Træfɪk
| Go
| Linux and Unix-like
| Load balancer and reverse HTTP proxy server
| MIT
| Not
|
relayd
| C
| OpenBSD FreeBSD and others
| Load Balancer, Application Level Gateway, SSL / TLS Transparent Proxy Gateway
| ISC
| Yes
|
We hope you will find in this collection something suitable for you, allowing you to speed up your web projects. And if your sites have already reached the heights of performance, waiting for a story about how you achieved this.