最近听了阿里一位大牛的讲座,讲web架构优化对网页加载的影响,看完之后对他所讲的一些优化方法进行一些总结和整理,发现收获还是蛮多的,下面多为个人整理和个人见解,希望有说的不对的,能及时指出

1.DNS解析优化

1.1利用TTL:利用TTL:因为DNS解析时,都是逐层查找DNS缓存,最后去跟服务器查询,而缓存有是有一定的生命周期,即Time To Live,而如果能快速的拿到缓存A记录,也就避免了我们逐层慢慢的查询了

1.2拆分域名:浏览器对于同一域名下文件同步请求是有上限的,比如ie8,同一域名下文件,同一时间只能发起6个请求,这时候拆分域名的重要性不言而喻

1.3DNS prefetch:拥有DNS prefetching属性的域名在用户点击前就已经在后台解析,而域名解析和内容载入都是串行网络的操作,故此能减少等待时间,即DNS预解析,在meta元标签里先告知浏览器要进行DNS预解析,然后通过link标签进行强制DNS预解析

2.TCP建联优化(即对rwnd,cwnd的处理)

2.1流量控制:即对接受窗口(rwnd)的处理,考虑丢包的情况,对于传输数据有一定上限限制,并进行相互的告知,防止接收方处理能力跟不上接受能力

2.2慢启动:即拥塞窗口(cwnd)的慢步启动,表示接收方确认前的最大允许传输的未经确认数据,而cwnd的初始值一般都很小,往往在得到接收方回应后,其cwnd值会缓步增加(这和宠物喂食是一样的道理,开始的时候,我们会放很少的狗粮,当发现不够时,我们在缓步增加他的喂食量),而cwnd的值也不会无止境的增长,当出现网络过载时,cwnd又会骤降--------------慢启动对于视频加载影响可能并不是很明显,但是web访问时,往往数据量并不是很大,可能我们的cwnd还在初尝试的增加中,web已经加载完毕了,所以说在应用于web优化时,我们慢启动的cwnd初始值可以适当的高一点,Google给出cwnd的建议值是10MSS

3.CDN加速

这块我感觉很多人都用过,最常见的就是script src引用一个cdn地址的文件,其原理就是就近原则

4.请求合并(减少http请求)

这块可行的方法太多了,举几个个人平时碰到的解决方案

4.1gulp/grunt合并文件

4.2雪碧图

4.3图片以base64码形式引入,每一个src都是一个http请求,而当img以base64的形式引入时,并不是外部载入,解析的事就交给了浏览器,从而减少了http请求

5.重定向优化

这边谈到的重定向肯定是临时重定向,说明白点就是我们一个form表单post给一个php文件,这时候浏览器就会被告知要跳转到另外一个url,这就是一步重定向。而重定向对于用户体验的影响就不要我多说了,SPA形式的应用之所以流行,很大一部分原因就是其数据交互都是采用ajax,即无缝刷新,每一个url的重刷新都是对用户耐心的一个消磨。但是凡事无绝对,重定向对于PC端有无疑是不可或缺的,比如说网易的官网,他需要对用户流量进行跟踪,从而知道网站哪些是热点区域,那些需要改良。所以我们不能一味的说避免重定向,而是有选择性的对其优化

当然重定向还有一个很突出的有点,对于有下载需求的客户,我们在收到他的下载请求后,获取他的ip,分配给他一个离他较近的下载地址,对不同用户进行不同的http重定向,从而加快用户体验

6.NS部署,Anycast

前者是在看云栖大会时看到的一个概念,百度之后也没有太大的效果,希望有大牛可以告知。后者大概是指一种就近原则的通信手段=0=一知半解

7.缓存

7.1动态页面静态缓存:虽然网页中部分数据使用动态读取得到的,但是直接缓存整个静态,将动态数据静态化,而数据库有变动时,在下次访问静态页面时,更换缓存

7.2缓存查询结果:同样的道理,这时候不对页面进行静态缓存,而是对查询结果缓存,减少对数据库的查询操作,同样减少了用户的加载时间

8.请求异步

这块就不多说了,大部分人应该在开发中常用这种方法了

9.http 2.0

= o=这块自行百度,个人看完后只是一知半解,还不敢拿上台面评头论足

10.负载均衡

web负载均衡,ip负载均衡,反代,dns等等,应用场景也多彩多样,通过给服务器集群分配任务,从而加快进程的处理,又或者根据ip分配较近,空闲服务器进行服务

11.除了上述架构系统层面的优化办法,还有一些小技巧

11.1 lazy load针对图片资源较多,或类似贴吧那种结构的网站

11.2 LAMPN系统组合,即linux+apache+mysql+php+nginx的组合,对于静态加载和php动态请求完美分工,各取所长

11.3 代码优化:css选择器命名优化,针对浏览器从右向左扫描的原则,尽量单一命名,减少父子选择器的使用。Js代码优化,例如针对作用域链的代码优化..等等

11.4 代码压缩:这块gulp和grunt都可以胜任

从架构层面谈web加载优化(个人整理)的更多相关文章

  1. H5 缓存机制浅析 移动端 Web 加载性能优化

    腾讯Bugly特约作者:贺辉超 1 H5 缓存机制介绍 H5,即 HTML5,是新一代的 HTML 标准,加入很多新的特性.离线存储(也可称为缓存机制)是其中一个非常重要的特性.H5 引入的离线存储, ...

  2. Vue 网站首页加载优化

    Vue 网站首页加载优化 本篇主要讲解 Vue项目打包后 vendor.js 文件很大 如何对它进行优化 以及开启Vue的压缩 和 nginx gzip 压缩的使用, 其他就是对接口优化等  1. v ...

  3. VS2013打开项目Web加载失败

    今天打开一个好久没打开过的老项目,发现web加载失败,如图: 然后重新加载项目,提示: 一开始直接在网上找答案,结果看的答案都不靠谱,只好自己动手了, 先看了 这里面是基础配置:大概看过后,又去看了提 ...

  4. js资源加载优化

    互联网应用或者访问量大的应用,对js的加载优化是不可少的.下面记录几种优化方法 CDN  + 浏览器缓存 CDN(content delivery network)内容分发网络, 最传统的优化方式.其 ...

  5. Web加载资源问题

    Web加载静态资源的时候是同步加载的,每次加载必须前一个加载完成后进行后一个加载,这个是由于javascript 去阻塞浏览器其它操作导致的 推荐文章:http://www.cnblogs.com/l ...

  6. JQuery浮动层Loading页面加载特效

    之前做项目,经常需要一些浮动层加载Loading. 现在好多前端框架都能实现了,最常用的就是 artDialog 下面记录下当时的代码. <!DOCTYPE html PUBLIC " ...

  7. vue项目首屏加载优化实战

    问题 单页面应用的一个问题就是首页加载东西过多,加载时间过长.特别在移动端,单页面应用的首屏加载优化更是绕不开的话题.下面我会写出我在项目中做的一些优化,希望大家能够相互讨论,共同进步. 我的项目vu ...

  8. vue加载优化策略

    vue.js是一个比较流行的前端框架,与react.js.angular.js相比来说,vue.js入手曲线更加流畅,不管掌握多少都可以快速上手.但是单页面应用也都有其弊病,有时候首屏加载慢的让人捏舌 ...

  9. Multidex(二)之Dex预加载优化

    Multidex(二)之Dex预加载优化 https://www.jianshu.com/p/2891599511ff

随机推荐

  1. 在ubuntu16.10 PHP测试连接MySQL中出现Call to undefined function: mysql_connect()

    1.问题: 测试php7.0 链接mysql数据库的时候发生错误: Fatal error: Uncaught Error: Call to undefined function mysqli_con ...

  2. JavaScript权威指南 - 数组

    JavaScript数组是一种特殊类型的对象. JavaScript数组元素可以为任意类型,最大容纳232-1个元素. JavaScript数组是动态的,有新元素添加时,自动更新length属性. J ...

  3. ASP.NET MVC5+EF6+EasyUI 后台管理系统(69)-微信公众平台开发-功能概述

    系列目录 为什么要先发这个文章? 因为接下来的文章是关于微信开发的系列,心中一定要有一个概念,知道自己接下来要做什么功能. 而且微信到处都是坑,我首先要把微信与本地跑通起来才敢发布,否则中间出现坑导致 ...

  4. Photoshop将普通照片快速制作二次元漫画风格效果

    今天为大家分享Photoshop将普通照片快速制作二次元漫画风格效果,教程很不错,对于喜欢漫画的朋友可以参考本文,希望能对大家有所帮助! 一提到日本动画电影,大家第一印象肯定是宫崎骏,但是日本除了宫崎 ...

  5. Android 剪贴板详解

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Clipboard 如本文有助于你理解 Android 剪贴板,不妨给我一个 Star.对于码农而言, ...

  6. iOS controller解耦探究实现——第一次写博客

    大学时曾经做过android的开发,目前的工作是iOS的开发.之前自己记录东西都是通过自己比较喜欢的笔记类的应用记录下了.直到前段时一个哥们拉着我注册了一个博客.现在终于想明白了,博客这个东西受众会稍 ...

  7. nginx服务器安装及配置文件详解

    nginx在工作中已经有好几个环境在使用了,每次都是重新去网上扒博客,各种编译配置,今天自己也整理一份安装文档和nginx.conf配置选项的说明,留作以后参考.像负载均衡配置(包括健康检查).缓存( ...

  8. 体验报告:微信小程序在安卓机和苹果机上的区别

    很多人可能会问:微信小程序和在微信里面浏览一个网页有什么区别? 首先,小程序的运行是全屏的,界面跟进入了一个APP很像,更为沉浸跟在微信里面访问h5不一样:其次,它的浏览体验更为稳定. 不过,这还不够 ...

  9. JavaScript 正则表达式语法

    定义 JavaScript定义正则表达式有两种方法. 1.RegExp构造函数 var pattern = new RegExp("[bc]at","i"); ...

  10. Java虚拟机 JVM

    finalize();(不建议使用,代价高,不确定性大) 如果你在一个类中覆写了finalize()方法, 那么你可以在第一次被GC的时候,挽救一个你想挽救的对象,让其不被回收,但只能挽救一次. GC ...