An alternative to putting scripts on the bottom, is to lazyload your scripts. To lazyload your scripts there are three ways i want to show you. First you can write your own little script that will asynchronously load your main javascript file by inserting the script tag for that file programmatically. Second possibility is to use a tool like require.js which is an asynchronous scripts downloader. The thrid possibility is the new HTML5 attribute for the script tag that you can use to force the browser to load the script asynchronously.
Lazyloading a javascript file default
You can create your own basic lazyloader yourself. Only a few lines of javascript in the head of your document and your done:
function lazyload() {
var scriptTag = document.createElement('script');
scriptTag.src = "//my_example.js"; // set the src attribute
scriptTag.type = 'text/javascript'; // if you have an HTML5 website you may want to comment this line out
scriptTag.async = true; // the HTML5 async attribute
var headTag = document.getElementsByTagName('head')[0];
headTag.appendChild(scriptTag);
}
This is something that can really make a difference, but this is an optimization field that is not very well known. Browser don't download all your files in parallel, they always only download one, two or maybe three files in parallel, this is why your browser Network Tab (firefox firebug / chrome developer tools) shows a so called waterfall of downloads. To fix this you have two options. The http 1.1 specification for example recommends no more then two parallel downloads.
You could try to put your static files, like images on different hostnames. Those can be different domains or sub-domains. You could put images on static1.example.com and other on static2.example.com or setup a cdn at cdn.some_cdn_host.com and put files there to increase the amount of parallel downloads.
Website loading times are important. Studies show that e-commerce platforms with low loading times will have a better conversion rate that sites with slow loading pages (tests at Amazon revealed that every 100ms increase in load time of Amazon.com decreased sales by 1%). Another important factor is that google now also measures loading times and includes those results in their ranking algorithm, which means that fast websites will rank slightly better then slow ones.
Of course you shouldn't over optimize your website. A mean if you find something that could be optimized, for example if this optimization will only make your website faster by less then one percent, but on the other hand you will have to put several hours / days of work into that task, then you may reconsider your decision to do it.