大型网站前端优化技巧

news/2024/5/10 22:06:22/文章来源:https://blog.csdn.net/xinshiku/article/details/52994244

大家都知道lazyload.js预加载技术,它极大的加快了网页打开速度,但是今天我们所讲的并不是介绍lazyload.js是如何工作的,而是重新认识一款新的优化神器-BigRender,从名字是可以很清楚的理解这一技术特点,bigrender顾名思义是对大页面渲染的优化。bigrender的原理是通过某种方式,将首屏不需要的html代码先存放起来。渲染好首屏后,再将存储好的html代码逐步渲染出来。

效果:

大型网站优化

打开天猫首页,首屏已经渲染好了,其他的内容,通过一个gif图来表示,这些没有被渲染的内容都被保存在一个隐藏的textarea框内,这么做的好处是显而易见,减少DOM节点,加快首屏的渲染,提高用户体验,如果首屏够长,内容够多,都可以进行这样的处理,速度那是没得说!

bigrender使用方法:

js代码

( function ($){
      $.fn.bigrender =  function (opts){
  
          var  winHeight = document.documentElement.clientHeight;
          var  sum = 0;
          var  count = 0;
          var  flash =  new  Array();
         
          // 'class' 是textarea父节点的类;'textarea' 是textarea标签的类;'threshold'是距离进入屏幕还有150像素就开始渲染;'remove'是否删除textarea标签       
          options = $.extend({
              'class'  '.br-warp' ,
             'textarea'  '.br-rendered' ,
              'threshold'  : 150,
             'remove'  true ,
          },opts);   
         
          $brenders = $(options.class);
          // 渲染首屏的内容
          initBigrender();   
          // 绑定滚动条事件
          scrollDisplay();
         
         
          // 函数定义
          function  initBigrender(){      
              $brenders.each( function (n,object){
                  sum++;
                 if (isRender($( this ))){
                      display($( this ));
                      count++;
                      flash[n] =  true ;
                 } else {
                      flash[n] =  false ;
                  }
              });
          }
        
          // 判断时候需要渲染
         function  isRender(object){
             offsetTop = object.offset().top;
              ojh = object.outerHeight( true );
             st = Math.max(document.body.scrollTop || document.documentElement.scrollTop);
             if (offsetTop+ojh+options.threshold >= st && offsetTop-options.threshold < (st+winHeight)){
                 return  true ;
              } else  return  false ;
             
          }
         
          // 渲染textarea内的html代码
          function  display(object){
             $display = object.find(options.textarea).eq(0);
              if (options.remove){
                  object.append($display.val());
                  $display.remove();
              } else {
                 object.append($display.val());
             }
          }
         
          // 屏幕绑定滚动条事件,当待渲染的内容进入可视屏幕就触发isRender函数
         function  scrollDisplay(){
              $(window).scroll( function () {
                 event.preventDefault();
                 if (count < sum){
                     $brenders.each( function (n,object){
                         if (flash[n] ==  false ){
                          if (isRender($( this ))){
                                display($( this ));
                                 count++;
                                  flash[n] =  true ;
                             } else {
                                 flash[n] =  false ;
                             }                  
                         }
                    });
                 }
             });    
         }
     };
})(jQuery);

插件调用

$.fn.bigrender({ 'threshold'  : 100});   // 提前100像素开始渲染

渲染前html

< article  class = "br-warp"  style = "min-height: 300px;" >< textarea  class = "br-rendered"  style = "display:none" >< div >html内容。。。</ div ></ textarea ></ article >

渲染后html

< article  class = "br-warp"  style = "min-height: 300px;" >< div >html内容。。。</ div ></ article >

优缺点 & 适用场景

–优点很明显,因为减少了首屏 DOM 的渲染,所以能加快首屏加载的速度,并且能分块加载 js/css,非常适用于一些模块区分度很高的网站。

–缺点是需要更改 DOM 结构(DOM 节点的替换和渲染),可能会引起一些重排和重绘。

具体查看插件主页:https://github.com/hanzichi/hanzichi.github.io/tree/master/2016/bigrender

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_884744.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

用html做一个漂亮的网站,个人网页,css

多的不说&#xff0c;直接上网页 注意这只是静态的网页 我个人自学的&#xff0c;样子不是恒好看&#xff0c;但是可以作为作业&#xff08;老师也没怎么讲&#xff0c;毕竟是在 大学里面嘛&#xff0c;大部分时间都是自学罢了&#xff09; 发布时间:2020-12-29 修改时间:202…

【历史上的今天】5 月 2 日:首个 MySQL 公开版本发布;微软推出双键鼠标;美国门户网站改名

整理 | 王启隆 透过「」&#xff0c;从过去看未来&#xff0c;从现在亦可以改变未来。 今天是 2022 年 5 月 2 日&#xff0c;回顾互联网历史&#xff0c;在 1988 年&#xff0c;用友软件成立。用友是全球领先的企业服务提供商&#xff0c;是亚太本土最大管理软件供应商&#…

从LiveJournal后台发展看大规模网站性能优化方法

作者: 于敦德 2006-3-16 原文: http://www.example.net.cn/archives/2006/03/olivejournaloio.html 一、LiveJournal发展历程 LiveJournal 是99年始于校园中的项目&#xff0c;几个人出于爱好做了这样一个应用&#xff0c;以实现以下功能&#xff1a; 博客&#xff0c;论坛社…

前端看到一些不错的写法,网站,资源网站,字体等

1.写法不错 a:hover:before { content: “> “; } http://cloudhead.io/ 2.字体不错 http://fonts.googleapis.com/css?familyRaleway:100,400,700 3.系统自带的不错的英文字体: “Segoe UI Light”, 4.推荐几个关于字体的网站&#xff1a; 网站1&#xff1a; 非…

海量关键词seo优化策略:挖词、选词和布词

SEO优化的前提是了解网站流量的来源。针对不同的流量来源选择优化的方案&#xff0c;包括关键词的选择、挖掘和排布。 要做SEO优化&#xff0c;首先需要了解网站获取流量的来源。目前网站流量来源主要分为四大块&#xff1a;直接访问、推荐访问、SEO、 APP。在第三块流量来源SE…

网站被挂马了怎么办?

我是英俊潇洒&#xff0c;技术过硬的网盾运维攻城狮龟哥。 有小伙伴反应被网站挂马的问题困扰&#xff0c;今天咱们来了解一下如何应对网站挂马问题。 首先JS挂马插入Web页面的方法有几十种&#xff0c;光这绝对够菜鸟们眼花缭乱&#xff0c;无从辨别木马在何处了。而IFRAME挂…

湖北云主机网站承载量一般有多大?

从理论上讲&#xff0c;湖北云服务器可以关联的网站总数不受限制&#xff0c;但是功能有所不同。在特定应用中云服务提供商通常会限制可以与Web服务器关联的网站域名的总数&#xff0c;因此可以放置在云服务器上的网站的数量相对有限。 如果云服务器上的网站过多&#xff0c;功…

企业建站有必要使用高防服务器吗?

很多 企业 用户 建设 自己 的网站内容进行 对外 宣传 &#xff0c;所以 需要 网站建设 的问题 是不可避免 的&#xff0c;没有 服务器 企业 无法 建立网站 &#xff0c;只要 公司 需要 建立网站 就需要 服务器 。 服务器 的选择 是多种多样 的。 例如 &#xff0c;我们可以使用…

wordpress建站:文章404 not found

博客是以lnmpwordpress4.8搭建的&#xff0c;在完工后发表了一些博客&#xff0c;尝试改掉原本的?p 模式&#xff0c;修改了固定链接设置&#xff0c;保存更改后&#xff0c;命令行lnmp restart. 再次打开文章却显示404 not found&#xff0c;只好求助于baidu google&#xff…

软件体系结构网站

软件体系结构综述 Software Architecture http://www.sei.cmu.edu/ata/ata_init.html http://www.dcs.st-and.ac.uk/Rsch/architecture.html http://www.itworld.com/AppDev/1189/ http://www.sdsc.edu/MDAS/Reports/MDAS.Final.SciTech/techreport-97.1/node56.html S…

都说日本留学穷人不要来,说说我在日本打工留学的真实感受|大学生日本留学|大学生留学日本|日本留学生网站|日本留学一年费用是多少钱

因为在烤肉店的工作一周只有一两天&#xff0c;而且全是中国人&#xff0c;日语得不到提升&#xff0c;好吧&#xff0c;主要是因为穷&#xff0c;所以我又多找了一份工作。这家店是私人开的居酒屋&#xff0c;居酒屋就相当于国内的小酒馆&#xff0c;大家吃饭喝酒的小店。 在…

2004年中国程序员大调查 ----转发CSDN网站

2004年中国程序员大调查 &#xff0d;&#xff0d;&#xff0d;&#xff0d;转发CSDN网站 “这是最好的时代&#xff0c;这是最坏的时代&#xff1b;这是智慧的时代&#xff0c;这是愚蠢的时代&#xff1b;这是信仰的时期&#xff0c;这是怀疑的时期&#xff1b;这是光明的季节…

多伦多大学工程部门的相关网站链接一栏

作者&#xff1a; Jintao 日期&#xff1a;2021-10-8 简介: 多伦多大学工程部门的相关网站链接一栏 网站名称用途链接多伦多大学官网用于查看多大所发生的实践以及查询有关信息https://www.utoronto.ca/Acron多大学生信息https://www.acorn.utoronto.ca/Quercus多大课程平台htt…

网站每日PV/IP统计/总带宽/URL统计脚本分享(依据网站访问日志)

在平时的运维工作中&#xff0c;我们运维人员需要清楚自己网站每天的总访问量、总带宽、ip统计和url统计等。 虽然网站已经在服务商那里做了CDN加速&#xff0c;所以网站流量压力都在前方CDN层了 像每日PV&#xff0c;带宽&#xff0c;ip统计等数据也都可以在他们后台里查看到的…

25.Nginx概念、在linux下的安装、静态网站的部署、反向代理和负载均衡

1.什么是Nginx Nginx 是一款高性能的 http 服务器/反向代理服务器及电子邮件&#xff08;IMAP/POP3&#xff09;代理服务器。由俄罗斯的程序设计师伊戈尔西索夫&#xff08;Igor Sysoev&#xff09;所开发&#xff0c;官方测试 nginx 能够支支撑 5 万并发链接&#xff0c;并且…

大型网站技术架构(一)--大型网站架构演化

看完了有一本书&#xff0c;就应该有所收获&#xff0c;有所总结&#xff0c;最近把《大型网站技术架构》一书给看完了&#xff0c;给人的印象实在深刻&#xff0c;再加上之前也搞过书本上讲的反向代理和负载均衡以及session独立存储和缓存&#xff0c;因此书本看起来还是挺通俗…

李新SEO:360搜索还需多久才能追上百度搜索?

奇虎360搜索自2012年8月16日悄然上线后&#xff0c;似乎没有太大的动静。然而在神不知鬼不觉中&#xff0c;360搜索已经对整个搜索市场造成了冲击。下图是今年7月份国内搜索引擎市场份额&#xff1a; 从上图可以看出&#xff0c;国内搜索引擎市场&#xff0c;百度依旧占领主导地…

简易钓鱼网站的构建(Kali SetoolKit)

首先需要先安装 Kali Linux 1.打开setoolKit 界面如下&#xff1a; 2.输入1&#xff08;社会工程学攻击&#xff09; 3.输入2 &#xff08;网站攻击&#xff09; 4.输入3&#xff08;钓鱼网站攻击&#xff09; 5.输入2&#xff08;网站克隆&#xff09; 6.出现如下界面&…

资源网站收集

收集一些有趣的技术学习网址 1、机器人钢琴家 https://kevinzakka.github.io/robopianist-demo/ 谷歌一项研究的演示&#xff0c;可以根据乐曲生成对应的弹奏指法&#xff0c;在网页上再现出来&#xff0c;非常厉害。 2、i18n AI 助手 https://chatgpt-i18n.vercel.app 借助 C…

学习网站布局 案例{1}

网站 html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdevice-width, …