Why insert static files (CSS, images, JavaScript, ECC) in a subdomain?
I see at least three possible (good) reasons:
- Use another machine to serve the static content
- Including some CDN
- Use another web-server to serve the static content
- Something more lightweight and faster
- No need for a full PHP/.NET/JAVA server to serve static content!
- Using another domain name means that you'll be able to not have the cookies that are used on the main domain
- Which means that HTTP requests will be smaller
- Which can count, if you have a lot of traffic (see this post, for example : Performance Research, Part 3: When the Cookie Crumbles)
That's what is done on StackOverflow if I remember correctly
The primary reason I think, is for cookies.
Cookies will be sent along with every request, let's say if you have 2kb of cookie data and load 20 images on a page.
That's an extra 40kb of data, multiply that by the number of page-views you have in a month, and you might be surprised about how much bandwidth you have lost in something useless, and bandwidth is not free...
Also, cookies set on the top-level domain, are sent across all requests made to any subdomain, in those cases, is even recommended to buy a new domain to host the static components there, in a cookie-free domain.
For example, StackOverflow uses sstatic.net
, Yahoo uses yimg.com
, YouTube uses ytimg.com
, Amazon uses images-amazon.com
, etc.
Give a look to this:
- Use Cookie-Free Domains for Components
To add to some of the answers above: some web browsers can only download two files simultaneously from any domain.
Serving static content from a different host name (or names - e.g. a.domain
, b.domain
, c.domain
) allows these older browsers to download more files in parallel.