如何快速的呈现我们的网页的技巧整理

时间:2024-04-26 17:12:40 

前几天小芳同学一直在群发起一些加速的话题,我已经把聊天记录抽出来,正打算整理出份像样的,没想到小芳同学非常速度的出了这篇。我的就省掉了,挖哈哈。

特别说一下了,这些方案并非适合所有的网站,很多部分有的网站还是不要做反而会更好。如果你还有更多的想法,可以到这里讨论或者评论,我只是归档成为方便阅读的,对了论坛和群讨论的另一些结果如果有价值我也会补充进来。

如何快速的呈现我们的网页 作者:flashsoft,(内容被我略修删过)。

一.我们需达解决的麻烦

  • 减少HTTP请求数. 减少HTTP请求数有什么好处

    • 降低服务器跟客户端的建立和消除HTTP请求和响应Header的开销

    • 减少服务器为HTTP连接的进程和线程的开销,如果可能,还会包括GZIP压缩的CPU开销.

  • 减小被请求文件大小, 减少请求数据占用的网络带宽.

  • 让用户更快的看到想要的结果.

  • 提高客户端渲染速度.

  • 让浏览器同时能请求更多的数据.

  • 提高服务器相应速度.

  • 通过版本化控制客户端Cache.

二.如何解决我们的麻烦

A.如何减少HTTP请求数

  1. 合并JS文件跟CSS文件。

  2. 合并框架图片以及相对变动较少的图片成一张,通过CSS背景切割来完成渲染,比如:加速图片显示。

  3. 合理使用本地Cache来缓存JS/CSS/IMAGE。

  4. 合理使用UserData缓存JS文件,对于FF用户可以单独请求服务器,这样能解决80%用户的问题.代码可以蓉儿(meizz)的js framework1

  5. 把JS跟CSS合并成一个文件

B.减小被请求文件大小,减少请求数据占用的网络带宽

  1. 压缩JS体积:删除JS中空白换行,注释,混淆把长变量换成短变量;

  2. 压缩CSS体积:删除CSS注释、写法尽量用简写;

  3. 使用(X)HTML+CSS方式搭建网站结构,提高CSS重用性,来减少(X)HTML文件大小;

  4. 使用服务器端GZIP压缩JS/ CSS文件,缩小传输文件大小。附注:Apache1跟Apache2的GZIP的效率跟方式不一样的,根据需要自行选择。

嗷嗷补充说明:压缩、合并JS和CSS都由程序处理。而不是自己手动去缩删,不然不利于后期维护。

C.让用户更快的看到想要的结果

用户对于一个站点的白页的忍受时间根据统计是8-12秒。白页的产生可能由于各种原因引起,我们能做的就是怎么让用户能变的稍微能等待更久。

  • 方案1.多做一个引导页,让用户体会其中的变化
    案例:mail.aol.com中的loading引导页

  • 方案2.优先载入页面结构以及结构图片,后一步载入当前页面数据,再后一步载入Iframe,Flash等数据.让用户尽早的看到被打开页面的希望.

D.提高客户端渲染速度

这个问题就比较泛泛了,影响客户端的渲染速度有多方面的,主要目的都是提高程序方面的效率.

  1. 对于大索引的结构,尽可能的少用索引访问,能用访问兄弟节点的方式尽可能用访问兄弟节点的方式.

  2. 字符串拼接尽可能用数组方式

  3. 大规模添加节点数据,请不要使用appendChild方式,尽量使用类似innerHTML的insertAdjacentHTML方式,FF下需修正2

E.让浏览器同时能请求更多的数据.

浏览器默认只是支持单域名同时有两个HTTP请求,使用多域名将能把请求数提高,在网络条件优良的情况下,能更快的下载数据,呈现结果.

F.提高服务器相应速度

对于需快速响应的文件,把其放入快速响应的服务器,应该是不错的方案,优化方案请系统储备组提供.

G.通过版本化控制客户端Cache.

通常js/css这类文件改动比较频繁,但是为了加载速度变快,我们有可能需要设定这类文件的过期时间为几天后,这样我们碰到的问题就是,如何及时更新这些在cache的文件?
通过一个简单的配置,通过修改JS的版本来及时告诉浏览器,这些文件必须重新请求了,不要继续使用浏览器cache中的数据. 方案有好几个:

  1. 手动改这些js的文件名

  2. 手动改这些js的路径

  3. 通过URL Rewrite方式来改重定位js路径

  4. 通过一个在高响应服务器上的一个js配置告知页面,这个页面该链接哪些JS文件

  5. 大版本不变,小版本不断追加,等一定时间后,统一更新,高效利用cache


标注

  1. meizz的js framework还没出正式版,有兴趣在CSDN的页面翻一下

  2. Firefox修正方式

    function addHTML(oParentNode, sHTML) {
      if(window.addEventListener) {// for MOZ
        var oRange = oParentNode.ownerDocument.createRange();
        oRange.setStartBefore(oParentNode);
        var oFrag = oRange.createContextualFragment(sHTML);
        oParentNode.appendChild(oFrag);
      }
      else {// for IE5+
        oParentNode.insertAdjacentHTML("BeforeEnd", sHTML);
      }
    }

标签:如何快速的呈现我们的网页的技巧整理
0
投稿

猜你喜欢

  • Python 找到列表中满足某些条件的元素方法

    2021-12-22 13:29:53
  • python中reduce()函数的使用方法示例

    2021-08-09 12:32:53
  • Golang编译器介绍

    2024-05-02 16:26:01
  • sqlserver中Case的使用方法(上下篇)第1/2页

    2024-01-19 06:29:18
  • Go语言net包RPC远程调用三种方式http与json-rpc及tcp

    2024-05-29 22:06:14
  • Vue过渡效果之CSS过渡详解(结合transition,animation,animate.css)

    2024-05-09 15:22:50
  • 监测站点使用多少session和application的asp程序

    2007-09-12 19:40:00
  • python在windows调用svn-pysvn的实现

    2022-03-15 05:13:48
  • CSS在Internet Explorer 6, 7 和8中的差别

    2009-10-26 18:14:00
  • 关于Vue3中defineProps用法图文详解

    2023-07-02 16:55:56
  • python文件的读取、写入与删除

    2022-01-21 21:17:12
  • 五个Python迷你版小程序附代码

    2023-09-28 02:55:26
  • python实现跳表SkipList的示例代码

    2022-04-05 05:01:53
  • Python字典中的值为列表或字典的构造实例

    2023-10-24 08:52:01
  • python 实现图片裁剪小工具

    2022-04-27 18:15:15
  • golang接口IP限流,IP黑名单,IP白名单的实例

    2024-04-25 15:18:14
  • 基于pycharm的beautifulsoup4库使用方法教程

    2022-12-05 22:47:05
  • 浅析Python打包时包含静态文件处理方法

    2023-05-29 01:12:10
  • php编程每天必学之表单验证

    2023-07-19 05:50:59
  • 某一公司的ASP面试题

    2011-09-15 20:50:20
  • asp之家 网络编程 m.aspxhome.com