I've recently tried Digitalocean hosting and decided to host this blog on it. I'm running a $5 / month server, or droplet as they call it, with 1 CPU, 512 MB of ram, 20 GB SSD and 1 TB of bandwidth. You even get $10 credit when you sign up, sweet!
You may look down on a $5 machine but I've found it to be more than enough for my need.
I'm serving "static" content that has been generated by Hugo
I recently ran some load testing at work for a newly launched website so I decided to test this $5 server. I've been using loader.io since its basic usage is free.
The test #
The server responds to a certain number of clients every second for a full minute.
The majority of the users must receive the page in < 5 secs. Only the html is loaded.
Plain HTML #
10.000 requests a second! (that is the maximum that loaded.io goes on a free plan)
Enable strong HTTPS #
As expected enabling https is taking its toll. The server can't accommodate less than half of the requests, "just" 4.000.
Full on PageSpeed on strong HTTPS #
I've then enabled Google's PageSpeed module for Nginx and enabled every performance related filter!
I've enabled 27 extra filters on top of the 34 enabled by default, leaving just 7 out that were just for compatibility or counterproductive, hell I've even enabled the filter to make the G analytics script async when it's already implemented that way.
Result: a quite dramatic 150 clients/sec 😀
Here is the list of filters that I've enabled:
1pagespeed EnableFilters responsive_images;
2pagespeed EnableFilters outline_css;
3pagespeed EnableFilters outline_javascript;
4pagespeed EnableFilters move_css_above_scripts;
5pagespeed EnableFilters move_css_to_head;
6pagespeed EnableFilters rewrite_style_attributes;
7pagespeed EnableFilters prioritize_critical_css;
8pagespeed EnableFilters make_google_analytics_async;
9pagespeed EnableFilters canonicalize_javascript_libraries;
10pagespeed EnableFilters inline_google_font_css;
11pagespeed EnableFilters local_storage_cache;
12pagespeed EnableFilters convert_to_webp_animated;
13pagespeed EnableFilters insert_image_dimensions;
14pagespeed EnableFilters inline_preview_images;
15pagespeed EnableFilters resize_mobile_images;
16pagespeed EnableFilters remove_comments;
17pagespeed EnableFilters collapse_whitespace;
18pagespeed EnableFilters elide_attributes;
19pagespeed EnableFilters extend_cache_pdfs;
20pagespeed EnableFilters sprite_images;
21pagespeed EnableFilters rewrite_domains;
22pagespeed EnableFilters trim_urls;
23pagespeed EnableFilters remove_quotes;
24pagespeed EnableFilters defer_javascript;
25pagespeed EnableFilters dedup_inlined_images;
26pagespeed EnableFilters lazyload_images;
27pagespeed EnableFilters insert_dns_prefetch;
Brotli (max compression) #
Just add Accept-Encoding: br to loader.io request headers and... 75 clients / sec. Not bad considering that I've enabled the maximum (11) level of compression!
..and, if you are curious about the compression, my homepage file sizes are (method from Mozilla's brotli post ):
Algorithm | Size |
---|---|
none | 9508 |
gzip | 3344 |
brotli | 2732 |