Railgun ensures that the connection between our network and the CloudFlare network is as fast as possible. Railgun achieves a 99.6% compression ratio for previously uncacheable web objects by using techniques similar to those used in the compression of high-quality video. The average website can expect a 1.43x performance increase.
When a request is made to a CloudFlare server for a web page that is not in cache CloudFlare makes an HTTP connection to the origin server to request the page. It’s that HTTP connection that Railgun accelerates and secures.
Even highly dynamic websites change slowly
Railgun works by recognizing that uncacheable web pages do not change very rapidly. For example, during an experiment, the CNN.com homepage HTML was captured once, and then again after 5 minutes and then again after one hour. The page sizes were 92,516, five minutes still 92,516 and one hour later 93,727.
CNN sets the caching on this page to 60 seconds. After one minute, it is necessary to download the entire page again. However, looking inside the page, not much has changed. In fact, the change between versions is on the order of 100s of bytes out of almost 100k. Here’s a screenshot of one of the binary differences between the CNN home page at five minute intervals. The yellow bytes have changed, the rest have not.
Experiments at CloudFlare have revealed similar change values across the web. For example, reddit.com changes by about 2.15% over five minutes and 3.16% over an hour. The New York Times home page changes by about 0.6% over five minutes and 3% over an hour. BBC News changes by about 0.4% over five minutes and 2% over an hour.
Although the dynamic web is not cacheable, it is also not changing quickly. That means that from moment to moment there’s only a small change between versions of a page. CloudFlare Railgun uses this fact to achieve very high rates of compression. This is very similar to how video compression looks for changes from frame to frame; Railgun looks for changes on a page from download to download.
Railgun consists of two components: the sender and the listener. The sender is installed at every CloudFlare data center around the world. The listener is a software component that NameHero.com has installed on our network for customers.
The sender and listener establish a permanent TCP connection that’s secured by TLS. This TCP connection is used for the Railgun protocol. It’s an all binary multiplexing protocol that allows multiple HTTP requests to be run simultaneously and asynchronously across the link. Or in other words, a persistent connection is opened between CloudFlare’s network and ours and eliminates the overhead of TCP.
We have made it simple for our customers to get the benefits of Railgun with one click. For additional information and instructions on how to activate, visit our knowledgebase.