全部文章 web开发 Api文档 时光画轴 全部壁纸 二次元 初音未来 自然 时光 游戏 崩坏学园 英雄联盟 碧蓝航线 全部番剧 电影 国创 番剧 全部视频 动画 影视 音乐
logo
web性能优化之划分主域

web性能优化之划分主域

Timeless 2018-07-19 113

很多网站的http请求都由一个域提供,但是像百度、腾讯啊之类的大站如果资源多的基本都是将资源合理分配到不同的域名下

下图为baidu.com的域划分

QQ截图20180719172252.png

一、为什么要划分主域

这就有一个问题了,既然一个域名能放完为什么要划分呢,而且是不是要添加多机台服务器呢?

浏览器上有一个“每个服务端最大连接数”的限制,那么添加服务端就可以增加页面资源的并行下载数

20161104200139509_看图王.jpg

也就是说将资源划分到多个域下,通过增加并行的下载数来提高页面加载速度

来个栗子~

一个域的情况:http://stevesouders.com/efws/domains1.php

QQ截图20180719173712.png

两个域的情况:http://stevesouders.com/efws/domains2.php

QQ截图20180719173725.png

快了差不多1s呢

二、怎么划分主域

2.1、IP地址和主机名

首先,浏览器“每个服务端最大连接数”的限制是根据 url 上面的主机名,而不是DNS解析出来的IP地址,浏览器把每个主机名当作单独的服务端,也就是说把资源分到不同的域名上就好啦。

(╯°□°)╯︵ ┻━┻  你肯定以为就要很多的服务器,

其实,只要为你的域名添加一条CHAME记录,直接指向你的网站域名就好啦

QQ截图20180719170959.png

然后服务器的http.conf也要配置一下哦,ServerAlias可以设置多个域名指向一个目录哟,只要空格分开就好啦

<VirtualHost _default_:80>
    DocumentRoot "D:\WWW\Timeless"
    ServerName timelessq.com
    ServerAlias  static.timelessq.com 
  <Directory "D:\WWW\Timeless">
    Options FollowSymLinks ExecCGI
      AllowOverride All
      Order allow,deny
      Allow from all
     Require all granted
  </Directory>
</VirtualHost>

这样就可以通过static.timelessq.com、www.timelessq.com来分配网站的资源了,比如静态资源的url都用static,其它的url为www,浏览器依旧会为这2个主机名开放最大连接数

写在后面的坑

本站因为证书问题,暂时没有使用主域划分,虽然cos的域名有证书了<( ̄︶ ̄)>,但是不太想用来存放静态资源,等哪天用了再更新一波

既然划分域对加载速度有帮助,那么划分多一点域是不是会好一点

Yahoo研究表明,域从一个增加到2个性能有所提高,但是超过2个反而对加载时间有负面影响,不过像一些库,js还是可以用CDN静态资源库的

其实这里有个问题,虽然通过CHAME记录配置的域名也可以访问对应的网站的资源,但是开启https的站点(www有证书了,不是泛域名证书),CHAME所用的域名(比如上面的static)也需要SSL证书,反正我测试的时候是这样,不知道能不能不用SSL,通过https也能访问原网站的资源,有了解的同学请底下留言

分享到微信