博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
高性能web开发之网络传输环节
阅读量:6363 次
发布时间:2019-06-23

本文共 1518 字,大约阅读时间需要 5 分钟。

hot3.png

1.减少请求数.

◆ 缓存,使用Expires 等设置过期时间;如果内容没有过期就不发送请求

◆ 合并小体积内容,例如吧数量众多的小图片放在一个图片,之后用css部分呈现(大体积的内容就别合并了)

◆ 延迟加载;部分内容,例如图片在页面呈现的时候才加载 (常用的就是滚动条到了以后才加载);减少不必要的请求

◆ 合并重复内容和文件

◆ 考虑使用第三方CDN资源,例如jQuery有免费的CDN,有些用户已经在其他网站访问过该内容了,那么到我们的网站加载就更快了 (而且使用CDN降低对我们服务器的压力)

◆ 使用HTML 5 中的Local Storage等保存数据

2.减少响应内容的体积.

◆ 适当的时候只返回响应头304 (HTTP缓存,如ETag等)

◆ 使用Gzip等压缩文件内容

◆ 使用免费的第三方工具,压缩css,js和html等文件的大小 (例如我们常见的 jquery.min.js)

◆ 适当使用Ajax操作

◆ 在适当的时候,将样式,HTML和数据分离 (数据量很大的时候极大减小文件体积)

     
数据      
数据      
数据   分成HTML 样式 和数据3部分   HTML  
     
  •      
     

    样式保存在CSS文件中一些基本的小常识 虽然有很多个li 不用给每个li指定class

    数据

    ◆ 使用JSON返回 (如果觉得麻烦也可以嵌入在页面中)

    ◆ 选择体积更小的数据格式,例如JSON一般就比XML体积来的小 (都经过压缩以后还是更小)

    ◆ 在设计上,只传送变化的部分数据 (例如要获取100条数据,可能已经加载了90条,那么再加载10条就好了)

    ◆ 移除请求和响应中不必要的HTTP Header (例如WCF Restful service中有的时候要传递表明当前数据是JSON还是XML的HTTP Header)

    ◆ 部分功能,如压缩会消耗CPU, 如ajax等会增加开发工作量,请谨慎选择

    3.增加请求并发数.

    ◆ RFC中,浏览器对于同一个域名下的资源只能使用2个线程同时进行访问(很多新的浏览器支持6个或者更多);解决方法是使用子域名,例如1.abc.com 2.abc.com

     
     
     
     
     
     
     

    ◆ 将一个超大的文件(例如有些人喜欢吧整个网站的js都放在一个文件)拆成一系列的中小文件 (有利于并发加载和缓存!)这个文件大小的Size选择很重要 我个人建议是10k-200k (依赖于网络)

    ◆ 上一条并没有和1-2冲突,文件太小太多也不行,文件太少太大也不行,这是一个平衡的问题

    ◆ 通过分拆文件,使得最常用页面(例如首页)的加载速度变快了

    ◆ 控制加载顺序,例如先加载页面大体结构,然后多个javascript异步请求加载数据(把一个大的html变为多个小的html片段)

    4.其他特殊技术.

    ◆ 利用HTTP 1.1的长连接特性,使得在一定程度上,服务器可以主动推送数据(减少了很多不必要的轮询)

    5.工具.

    ◆ Fiddler (Free)

    ◆ FireDebug (Free)

    ◆ HttpWatch

    部分内容引用自MSDN和其他第三方文章..

    转载于:https://my.oschina.net/ydsakyclguozi/blog/387379

    你可能感兴趣的文章
    Windows Dll Injection、Process Injection、API Hook、DLL后门/恶意程序入侵技术
    查看>>
    [转]什么是C++虚函数、虚函数的作用和使用方法
    查看>>
    BZOJ4374 : Little Elephant and Boxes
    查看>>
    【.Net Framework 体积大?】不安装.net framework 也能运行!?开篇叙述-1
    查看>>
    带新手走进神秘的HTTP协议
    查看>>
    [Angularjs]ng-show和ng-hide
    查看>>
    Windows Shell编程之如何编写为文件对象弹出信息框的Shell扩展
    查看>>
    [转]skynet Lua中的协程
    查看>>
    2 安装redis.md
    查看>>
    码农经常读错的单词
    查看>>
    [Mysql]MySQL 服务无法启动。
    查看>>
    msm8909+android5.1分区及烧录的镜像文件介绍【转】
    查看>>
    SSO基于cas的登录
    查看>>
    ehcache 在集群环境下 出现 Cause was not due to an IOException or NotBoundException
    查看>>
    git rm与git rm --cached
    查看>>
    Java内部类持有外部类的引用详细分析与解决方案
    查看>>
    BZOJ 4516: [Sdoi2016]生成魔咒 [后缀自动机]
    查看>>
    高并发和多线程
    查看>>
    连接数据库失败 错误提示:尝试读取或写入受保护的内存。这通常指示其他内存已损坏...
    查看>>
    Linux Bash 脚本:自己定义延迟代码块(裸数据保存方案)
    查看>>