Did you know that Chrome has a list of internal pages that allows you to see advanced flags and settings? There are some hidden gems inside the Google Chrome internal pages that give a useful insight into the hard work that the browser is doing behind the scenes.
If you navigate to chrome://chrome-urls in your address bar in Chrome, you will be presented with a list of internal URLs. Like most developers, I quite like to fiddle and experiment with different settings in all of the software that I use. In this article, I am going to run though a few of the hidden gems inside Google Chrome and show you how you can learn more about the internals of your browser.
Have you ever wondered what happens under the hood when you type in the address bar and Chrome presents you with an autocomplete list of suggested URLs? Well, if you type chrome://predictors into your address bar, you will be presented with a list of predicted URLs and their hits and misses. As you navigate through different sites, Chrome tracks the hit / miss count and uses this to initiate DNS preresolve and TCP preconnect. It then uses this table to predict where you're going to head next.
This is great because high confidence hits might trigger a full prerender in a background tab. This ultimately makes your browsing experience much faster because the DNS has already been resolved or the page has already been prerendered! It's also quite interesting to view the different sites that you type into your address bar and how frequently the predictors are correct.
Another great internal link is the chrome://net-internals/#prerender page. As the name suggests, it shows a list of pages that have been prerendered in Chrome.
You may have used prefetch hints in your web pages before; If you declare a prefetch hint for a resource in your HTML, the browser will fetch a copy of the resource in the background. This makes the performance significantly faster when you actually visit the page. For more information about using this feature on your websites, check out this article about HTML5 Link Prefetching.
This net-internals page is a great way to test your sites and ensure that your link prefetching is working as expected. If you would like to know more information about these hints, Ilya Grigorik gave a great talk entitled "Preconnect, prefetch, prerender" which goes into more detail about link prefetching.
The Chrome development team are constantly releasing new features and updates, but as most these newer features are often experimental, many of them are switched off by default. The chrome://flags page allows you to see a list of experimental features and their enabled / disabled status.
Many of the features are in experimental mode and may be a little rough around the edges, so it's always worthwhile being careful when editing these settings. If you'd like to find out more about the different experimental features, check out Chrome Beta, it allows you to play with the newest Chrome features as they are released.
HTTP2 is here and more and more sites are beginning to adopt this protocol. If you navigate to chrome://net-internals/#spdy, you will be presented with a list of sites that you have visited that are already using the HTTP2 protocol.
It's pretty cool to see that a lot of the Google sites are already using HTTP2!
This page is a bit of a fun one and I can't imagine you would use this in your day to day development as it is for debugging purposes only. However, if navigate to chrome://crash/ you should be presented with a page like the one below.
There are a number of other internal debugging pages and by entering any one of the following, you can cause the browser to crash or hang.
chrome://crash chrome://kill chrome://hang chrome://shorthang chrome://gpuclean chrome://gpucrash chrome://gpuhang
If you'd like to experiment with a few more of the Chrome internal URLs, have a look at chrome://chrome-urls for a full list of all the Chrome URLs.