美文网首页程序员技术栈程序员我是程序员;您好程先生;叫我序员就好了
为什么静态资源放置于一个或者多个独立域名之下

为什么静态资源放置于一个或者多个独立域名之下

作者: 神秘者007 | 来源:发表于2018-03-18 08:43 被阅读12次

为什么静态资源要放在一个或者若干个独立的域名之下?我当时脑海中首先想到的就是为了动静分离,减轻web服务器压力,但是仔细一想不太对,如果仅是为了这个原因,大可不必启用那么多一级域名,用若干二级域名不是更好?于是带着这个疑问,拜访了搜索引擎。果然不出所料,原因不止这一个,现整理出来,作为备忘。

查看了淘宝的官网


image.png
image.png

1、启用新的一级域名,每次请求浏览器不会携带cookie。这对于cookie内容比较大,并且流量大的网站会省去不少宽带费用。同时这也解惑了为什么不用二三级域名。

2、动静分离。静态资源与动态内容分离,有利于部署于CDN。

3、HTTP协议对同一个域名的同时下载线程数有限制。主要是为了优化下载速度,防止同一域名下下载线程数过多,导致下载速度变慢。各个浏览器都会遵守这个规定,但是限制的数目可能不一致。基于这个原因,可将资源部署于不同的域名,以达到最大化并发下载。(重点)

浏览器的并发请求数目限制是针对同一域名的。
意即,同一时间针对同一域名下的请求有一定数量限制。超过限制数目的请求会被阻塞,这就是为什么会有zhimg.com, http://twimg.com 之类域名的原因。
(这是其中一个原因,另一个主要原因是,向 http://zhihu.com 请求资源会把 http://zhihu.com 下本地的所有 cookie 发送过去,这是请求图片,js等资源不需要的,会造成很大的浪费,详情见http://webmasters.stackexchange.com/questions/26753/why-do-big-sites-host-their-images-css-on-external-domains

image.png

如图,有的请求会持续很长时间,如果把 img, css, js... 都放到 http://zhihu.com 一个域名下面,其他请求就迟迟无法完成,浏览者看来就是『卡住了』。而把图片放到 http://zhimg.com 之后,css和图片就可以并发请求了。

具体不同浏览器这个限制的数目


image.png

4、静态资源独立部署,为全局产品服务。这属于业务划分的范畴了。比如taobao.com和tmll.com都会用到tbcdn.cn上的静态资源,这些资源不必从属于某个产品。

5、接第4点原因,有利于最大化利用客户端缓存。比如访问taobao.com,缓存了tbcdn.cn上的某个js文件,之后再访问tmll.com时,也用到此js文件,不必再从tbcdn.cn上下载,直接用客户端缓存即可。

最后,这样做的同时,就已经减轻了每台服务器的压力,服务器越多,每个服务器压力就越小。当然,这需要一个平衡。

参考文献:
http://blog.csdn.net/u010552788/article/details/51056554
https://www.zhihu.com/question/20474326

相关文章

  • 为什么静态资源放置于一个或者多个独立域名之下

    为什么静态资源要放在一个或者若干个独立的域名之下?我当时脑海中首先想到的就是为了动静分离,减轻web服务器压力,但...

  • 静态资源放置于独立域名之下的好处

    独立域名指的是一级域名而不是二级或三级域名大型网站的静态资源都是放在独立的域名之下的。 浏览器的很多机制对网站的访...

  • 为什么静态资源和主页面要置于不同的域名下?

    前段时间要新启一个项目,在定域名的时候,我想一个域名就可以了吗,但是我的老大却让设置两个域名,产品觉得奇怪,配置域...

  • Base URL与页面重定向

    Base URL 当我们的页面有大量的锚点跳转或者静态资源加载时,并且这些跳转或者资源都在统一的域名的场景时,我们...

  • 142、【JavaEE】【Nginx】动静分离

    1、概述 “动静分离”目前是一个常见并且成熟的开发模式。将静态资源比如说图片、音频、视频等放在一个(或多个)独立的...

  • webpack入门

    一个包含前端的项目,里面可能有多个.js,多个.css,多个静态图片,多个其他前端资源。一些js资源彼此之间存在依...

  • 跨域解决方案

    1、 通过jsonp跨域 通常为了减轻web服务器的负载,我们把js、css,img等静态资源分离到另一台独立域名...

  • 发布个人网站的前期准备1

    本文以申请自己的独立域名,独立云服务,有独立的程序代码为基础 1.购买域名 域名可以是网上免费的耳机域名或者是自己...

  • 5.Nginx虚拟主机的别名配置

    所谓虚拟主机别名,就是为虚拟主机设置除了主域名之外的一个或者多个域名名字,这样就能实现用户访问的多个域名对应同一个...

  • Nginx的几个常用配置和技巧

    一个站点配置多个域名 server_name 后跟多个域名即可,多个域名之间用空格分隔 一个服务配置多个站点 基于...

网友评论

    本文标题:为什么静态资源放置于一个或者多个独立域名之下

    本文链接:https://www.haomeiwen.com/subject/oqulqftx.html