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.