百度移动端首页秒开学习

AlgoSableRover
• 阅读 4153

百度首页秒开

我们打开手机端看百度首页,搜索框,新闻,图片,tab标签... 秒开... 那他是怎么做到呢?

  • 静态文件放置

百度首页是没有外链的,js,css代码在上线之前都编译到了html里

  • 缓存

对于一些页面不变的静态文件,例如html/css/javascript如果有些不变的,就会把它存到本地,例如localStorage,可以通过对标签添加一些属性data-local='aaa',来标识内容,等到,再次加载的时候,就从localStorage中找到对应的内容,进行渲染

存:
<script>
    function cacheOne(attrid) {
        var content = document.querySelector('[data-local="' + attrid + '"]').outerHTML;
        localStorage.setItem(attrid, content);
    }
    cacheOne('aaa');
</script>
取:
<script type="text/javascript" data-local="test1">
    function readOne(attrid) {
        var content = localStorage.getItem(attrid);
        document.querySelector('[data-local="' + attrid + '"]').outerHTML = content;
    }
    readOne('aaa');
</script>
  • 外链
    如果都存本地的话,那手机内存会暴,所以有些静态文件又通过一个借口返回,通过外链一些静态资源和本地存的资源减少了页面加载的时间,但是问题又来了,如果请求的资源不同于本地存的,那岂不又炸了...
    所以,会给每个文件以自己的内容生成的版本号为戳,标识自己的唯一性,每次服务端返回页面时,会把当前在服务器上的所有静态文件版本号,返给前端,首屏加载完成后,会用这些版本号与local中进行一一比较,如果发现不一致,就发起一个合并请求,这样可以保证每个文件的缓存与版本迭代,同时,避免了过多的外链。
  • 缓存Dom
    不变的数据,例如dom就缓存,render树基本不发生变化就进行缓存,对于可变的就不能缓存
  • 使用iconfont
    如果有很多icon图标我们最好使用iconfont,节省一些资源
  • 卡片的异步加载与缓存
    首屏显示几个卡片,等到下拉的时候在加载更多的卡片
  • 不在首屏的就要异步化
    当然,这种是我们经常用到的,首屏人人都会看到 但是滑到底部就人少了,所以这种情况我们就按需加载
  • 少量静态文件的域名
    例如一些iconfont,图片就放在别的域名下,虽然节省了DNS的解析,但请求图片的时候会携带cookie所以我们要减少cookie,来提升性能
  • 极小的图片base64化
    小的图片我们base64化存到本地localStorage中,又可以节省网络请求

原文 https://segmentfault.com/a/11...

点赞
收藏
评论区
推荐文章
冴羽 冴羽
3年前
VuePress 博客优化之添加数据统计功能
前言在中,我们使用VuePress搭建了一个博客,最终的效果点击查看:。今天我们给博客添加数据统计功能。1.百度统计1.1创建站点1.1.1登陆站点登陆百度统计后台:1.1.2新增网站在「管理」「网站列表」中,点击「新增网站」:1.1.3填写信息添加网站域名、网站首页等信息:1.1.4获取代码添加完后,会自动跳转到代码获
Python进阶者 Python进阶者
3年前
手把手教你使用JavaScript打造一款扫雷游戏
大家好,我是皮皮。扫雷大家都玩过,今天我们就是用JavaScript来打造扫雷游戏。废话不多说,直接看下效果;上图是失败后的结果。一、思路分析我们新建一个首页,在首页放置一个点击开始游戏的按钮,动态生成100个小格,即100div;然后通过点击div进行扫雷操作,然后扫雷成功或者失败显示对应的结果;二、静态页面搭建2.1结构层
Easter79 Easter79
4年前
Vue 做项目经验
Vue做项目经验首先需要知道最基本的东西是:Vue项目打包:npmrunbuildVue生成在网页上看的端口:npmrundev修改端口号的地方在:config文件夹下index.js文件port改变首页面在main.jsconstroutes\{ path:'/', comp
happlyfox happlyfox
4年前
.net web core 如何编码实现文件上传功能
关于我前言在进行Web前后端分析开始时,我们经常会碰到文件上传的需求。上传用户头像,上传认证材料、审核材料等,这些都可以归类为文件上传功能。今天主要把自己在开发过程中的心得进行一个整理,供大家学习。开启静态文件中间件默认情况下,静态文件(如HTML、CSS、图像和JavaScript)是ASP.NETCore应用直接提供给客户端的资产。开启静态
Stella981 Stella981
4年前
Python+Selenium自动化篇
本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。0.元素定位方法主要有:id定位:find\_element\_by\_id('')name定位:find\_element\_by\_name('')class定位:find\_element\_by\_class\_name(''
Stella981 Stella981
4年前
Html5应用接入百度移动ssp广告教程
使用Html5打包android应用,应当如何添加广告呢?最近就遇到了这个问题。使用Html5开发了个应用,想在里面植入广告来挣点小费,发现还真不容易,很少有提供js接口的,后面发现可以通过html5百度移动ssp插件来实现在应用里面插入百度广告。过程如下安装phonegap插件for百度移动
Wesley13 Wesley13
4年前
JSP页面、EL表达式
JSP页面:jsp是一种动态页面,html页面和jsp页面最大的区别是:html是一种静态页面,在html中只能定义css、js等,在jsp中除了可以定义css、js之外还可以定义java代码,还可以在jsp中使用el表达式和jstl标签,但是java代码必须使用<%java代码%第一
Stella981 Stella981
4年前
Flask实战第52天:cms添加轮播图前端代码逻辑完成
首页我们在模态框中的保存按钮加一个id,这样方便我们选取这个按钮<buttontype"button"class"btnbtnprimary"id"savebannerbtn"保存</button在static/cms/js/下新建banners.js$(function(){$("
taskbuilder taskbuilder
10个月前
TaskBuilder客户端请求前端静态文件的流程
任擎服务器支持支持以下三种静态文件:4.1.1纯静态文件纯静态文件是指存放在tasgine\web目录或其子目录下,可以直接在浏览器里加载或显示的文件,包括HTML文件、CSS文件、前端JS文件、图片、音视频文件等,客户端需要访问这种文件时,向任擎服务器发
程序员一鸣 程序员一鸣
5个月前
鸿蒙开发:Navigation路由组件使用由繁入简
Navigation是路由容器组件,一般作为首页的根容器,也就是说,我们只在首页面使用即可,对于所有的子页面使用NavDestination即可,项目中的页面,无外乎首页面和子页面,首页面还好,书写一次即可,而子页面就非常非常的多了,所以,需要针对模版进行抽取。
陈杨 陈杨
5个月前
鸿蒙5开发宝藏案例分享---体验流畅的首页信息流
🌟鸿蒙新闻类首页开发全攻略:流畅动效懒加载实战Hey各位鸿蒙开发者!今天要分享一个超实用的鸿蒙新闻类首页开发方案,官方文档里藏着的宝藏案例被我挖出来了!从流畅的Tab切换动效到丝滑的懒加载列表,手把手带大家实现高性能新闻首页👇🚀整体场景效果用户操作
AlgoSableRover
AlgoSableRover
Lv1
正是江南好风景,落花时节又逢君。
文章
3
粉丝
0
获赞
0