如何优化搜索?

目录
1.背景介绍
2.知识剖析
3.常见问题
4.解决方案
5.编码实战
6.扩展思考
7.参考文献
8.更多讨论
 1.背景介绍
   为什么要对网站进行性能优化
    网站的访问量及用户的持久性其实在一定程度上取决于其性能,如果一个网站响应耗时久,
    动画卡顿,占用大量的cpu等,往往就会导致用户流失。
    尤其是app及微信端应用,可以这么说,如果页面打开都要超过4秒,
    这体验绝对差。作为一个开发者,是不允许出现这种情况的,那么该如何提高页面的性能呢?
    大致的网站优化性能步骤不外乎减少HTTP请求次数,减少DNS访问,减少对DOM的操作,缩减请求的文件大小/cookie大小等等.
 2.知识剖析
如何进行网站性能优化
      1、尽量减少HTTP请求次数
      2、减少DNS查找次数
      3、避免跳转
      4、可缓存的AJAX
      5、推迟加载内容
      6、预加载
      7、减少DOM元素数量
      8、根据域名划分页面内容
      9、使iframe的数量最小
      10、不要出现404错误
      11、使用内容分发网络(CDN)
      12、为文件头指定Expires或Cache-Control
      13、Gzip压缩文件内容
      14、配置ETag
      15、尽早刷新输出缓冲
      16、使用GET来完成AJAX请求
      17、把样式表置于顶部
      18、避免使用CSS表达式(Expression)
      19、使用外部JavaScript和CSS
      20、削减JavaScript和CSS
      21、用<link>代替@import
      22、避免使用滤镜
      23、把脚本置于页面底部
      24、剔除重复脚本
      25、减少DOM访问
      26、开发智能事件处理程序
      27、减小Cookie体积
      28、对于页面内容使用无coockie域名
      29、优化图像
      30、优化CSS Spirite
      31、不要在HTML中缩放图像
      32、favicon.ico要小而且可缓存
      33、保持单个内容小于25K
      34、打包组件成复合文本
 3.常见问题
    DNS为什么和优化搜索有关 
4.解决方案
     域名系统(DNS)提供了域名和IP的对应关系,就像电话本中人名和他们的电话号码的关系一样。当你在浏览器地址栏中输入www.dudo.org 时,DNS解析服务器就会返回这个域名对应的IP地址。DNS解析的过程同样也是需要时间的。一般情况下返回给定域名对应的IP地址会花费20到120毫秒的时间。而且在这个过程中浏览器什么都不会做直到DNS查找完毕。
     缓存DNS查找可以改善页面性能。这种缓存需要一个特定的缓存服务器,这种服务器一般属于用户的ISP提供商或者本地局域网控制,但是它同样会在用户使用 的计算机上产生缓存。DNS信息会保留在操作系统的DNS缓存中(微软Windows系统中DNS Client Service)。大多数浏览器有独立于操作系统以外的自己的缓存。由于浏览器有自己的缓存记录,因此在一次请求中它不会受到操作系统的影响。
     Internet Explorer默认情况下对DNS查找记录的缓存时间为30分钟,它在注册表中的键值为DnsCacheTimeout。Firefox对DNS的查找 记录缓存时间为1分钟,它在配置文件中的选项为network.dnsCacheExpiration(Fasterfox把这个选项改为了1小时)。
      当客户端中的DNS缓存都为空时(浏览器和操作系统都为空),DNS查找的次数和页面中主机名的数量相同。这其中包括页面中URL、图片、脚本文件、样式表、Flash对象等包含的主机名。减少主机名的数量可以减少DNS查找次数。
减少主机名的数量还可以减少页面中并行下载的数量。减少DNS查找次数可以节省响应时间,但是减少并行下载却会增加响应时间。我的指导原则是把这些页面中 的内容分割成至少两部分但不超过四部分。这种结果就是在减少DNS查找次数和保持较高程度并行下载两者之间的权衡了。
    
5.编码实战
6.扩展思考
   1.HTTP缓存怎样设置? 
         meta http-equiv="Cache-Control" content="max-age=7200" meta http-equiv="expires" content="someGMT" 
  2.链接后面是否带“/”有什么区别? 
      有/会认为是目录,没/会认为是文件。 加了/浏览器会指向一个目录,目录的话会读取默认文件index等等。 没有/会先尝试读取文件,如果没有文件再找与该文件同名的目录,最后才读目录下的默认文件。 网址没有加上/会给服务器增加一个查找是否有同名文件的过程。 
  3.如何正确理解 Repaint 和 Reflow ? 
       Repaint(重绘)就是在一个元素的外观被改变,但没有改变布局(宽高)的情况下发生,如改变visibility、outline、背景色等等。 Reflow(重排)就是DOM的变化影响到了元素的几何属性(宽和高),浏览器会重新计算元素的几何属性,会使渲染树中受到影响的部分失效, 浏览器会验证DOM树上的所有其它结点的visibility属性,这也是Reflow低效的原因。 如:改变窗囗大小、改变文字大小、内容的改变、浏览器窗口变化,style属性的改变等等。 如果Reflow的过于频繁,CPU使用率就会噌噌的往上涨,所以前端也就有必要知道 Repaint 和 Reflow的知识。 减少性能影响的办法: 总之,因为 Reflow 有时确实不可避免,所以只能尽可能限制Reflow的影响范围。
  
7.参考文献
         参考一:
         <a href="http://www.ha97.com/2710.html"></a>
         参考二:
         <a href="https://blog.csdn.net/weixin_40346317/article/details/81144131"></a>
8.更多讨论
 1.减少HTTP请求次数同时又可能保持页面内容丰富的技术有哪些。
    1.合并文件是通过把所有的脚本放到一个文件中来减少HTTP请求的方法,如可以简单地把所有的CSS文件都放入一个样式表中。当脚本或者样式表在不同页面中使用时需要做不同的修改,这可能会相对麻烦点,但即便如此也要把这个方法作为改善页面性能的重要一步。
    2.CSS Sprites是减少图像请求的有效方法。把所有的背景图像都放到一个图片文件中,然后通过CSS的background-image和 background-position属性来显示图片的不同部分;
    3图片地图是把多张图片整合到一张图片中。虽然文件的总体大小不会改变,但是可以减少HTTP请求次数。图片地图只有在图片的所有组成部分在页面中是紧挨在 一起的时候才能使用,如导航栏。确定图片的坐标和可能会比较繁琐且容易出错,同时使用图片地图导航也不具有可读性,因此不推荐这种方法;
   4.内联图像是使用data:URL scheme的方法把图像数据加载页面中。这可能会增加页面的大小。把内联图像放到样式表(可缓存)中可以减少HTTP请求同时又避免增加页面文件的大小。但是内联图像现在还没有得到主流浏览器的支持。
减少页面的HTTP请求次数是你首先要做的一步。这是改进首次访问用户等待时间的最重要的方法。如同Tenni Theurer的他的博客Browser Cahe Usage – Exposed!中所说,HTTP请求在无缓存情况下占去了40%到60%的响应时间。让那些初次访问你网站的人获得更加快速的体验吧!
 2.DOM元素数量如何计算出来,
只需要在Firebug的控制台内输入:
document.getElementsByTagName(‘*’).length

3.<iframe>优缺点

<iframe>优点:

  • 解决加载缓慢的第三方内容如图标和广告等的加载问题
  • Security sandbox
  • 并行加载脚本

<iframe>的缺点:

  • 即时内容为空,加载也需要时间
  • 会阻止页面加载
  • 没有语意

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值