Standard practice is to place JavaScript <script> tags just before the closing </body> tag. Loading your scripts last allows your site's visuals to show up more quickly and discourages your JavaScript from trying to interact with elements that haven't loaded yet.
Asynchronous
<scriptsrc="path/to.js"async></script>
Another alternative, when the Javascript code being loaded is not necessary for page initialization, it can be loaded asynchronously, speeding up the page load. Using async the browser will load the contents of the script in parallel and, once it is fully downloaded, will interrupt the HTML parsing in order to parse the Javascript file.
Deferred
<scriptsrc="path/to.js"defer></script>
Deferred scripts are like async scripts, with the exception that the parsing will only be performed once the HTML is fully parsed. Deferred scripts are guaranteed to be loaded in the order of declaration, same way as synchronous scripts.
<noscript>JavaScript disabled</noscript>
The <noscript> element defines content to be displayed if the user has scripts disabled or if the browser does not support using scripts. The <noscript> tag can be placed in either the <head> or the <body>.
The standard practice is to place CSS <link> tags inside the <head> tag at the top of your HTML. This way the CSS will be loaded first and will apply to your page as it is loading, rather than showing unstyled HTML until the CSS is loaded.
The typeattribute is not necessary in HTML5, because HTML5 usually supports CSS.
Use the mime-type image/png for PNG files and image/x-icon for icon (*.ico) files. For the difference, see this SO question(opens new window).
A file named favicon.ico at the root of your website will typically be loaded and applied automatically, without the need for a <link> tag. If this file ever changes, browsers can be slow and stubborn about updating their cache.
Some browsers allow alternate style sheets to apply if they are offered. By default they will not be applied, but usually they can be changed through the browser settings:
Firefox lets the user select the stylesheet using the View > Page Style submenu, Internet Explorer also supports this feature (beginning with IE 8), also accessed from View > Page Style (at least as of IE 11), but Chrome requires an extension to use the feature (as of version 48). The web page can also provide its own user interface to let the user switch styles.
The preconnect relationship is similar to dns-prefetch in that it will resolve the DNS. However, it will also make the TCP handshake, and optional TLS negotiation.
This is an experimental feature.
<linkrel="preconnect"href="URL">
DNS-Prefetch
Informs browsers to resolve the DNS for a URL, so that all assets from that URL load faster.
<linkrel="dns-prefetch"href="URL">
Prefetch
Informs the browsers that a given resource should be prefetched so it can be loaded more quickly.
<linkrel="prefetch"href="URL">
DNS-Prefetch resolves only the domain name whereas prefetch downloads/stores the specified resources.
Prerender
Informs browsers to fetch and render the URL in the background, so that they can be delivered to the user instantaneously as the user navigates to that URL. This is an experimental feature.