怎么在加载首页的时候同时弹出另一个页面窗口的脚本_如何建设一个高性能的网站...

news/2024/5/9 2:28:59/文章来源:https://blog.csdn.net/weixin_39841610/article/details/110798442
网站是否高性能,我们第一眼看的就是响应是否快速,运行是否流畅,但是开发人员应该怎么做才可以做到高性能呢?

10b6bd9666739b3262e25904625e3559.gif

01 前言

最近在进行项目构建的时候遇到很多难题,首先我们最容易忽略的问题就是关于性能优化的。为什么这么说呢?我相信很多小伙伴开发网站都是在本地进行构建的,我们发现项目跑起来之后根本是没有什么延迟的问题出现,或许我们根本就不会注意到这个问题,尤其是那些刚开始接触工程化项目开发的时候。通过本地进行项目构建我们是本地起的http服务,但是假如我们线上的话就不一样了,服务器是在很远的地方放着,肯定会有你意想不到的延迟。

那么我们在项目中应该怎么去做才能有更好的效果呢?大家可以从一道很经典的面试题目《网站从按下回车到显示的过程》来思考,其实这里无非就是两个方面,一个就是减少请求,一个是压缩请求。一个是减少数量,一个是减少项目体积大小,解决了这两个问题,基本上你的网站就可以优化很多了,我之前也写过一篇关于性能优化的文章《前端性能该如何优化》,现在就补充一些其他的内容。接下来就介绍一些规则。

1aedc194744c0d46724e808c12932c8b.png

02 建设指南

减少HTTP请求

我们网站假如有很多小图片的话就可以用到合并图片的方法,把所有的图片都放到同一张图片当中,然后根据位置来显示图片的内容。这样的话我们就可以做到只发送一次请求然后获取多个图片的方法,这就是我们常说的“雪碧图”。不过这种方法在一些图标或者logo这样的小图片上用的比较多,一般大的图片都会使用一些新类型的图片格式如webp格式、svg格式等。

另一个减少请求的做法就是合并js和css文件。假如项目比较小的话我们尽管把样式代码放到同一个文件当中,注意选择器的使用和类命名规范就不会出现大问题。但是项目比较大的话我们可以选择提取公共的样式代码文件,命名为common.css这样,减少相同样式的请求,一般都是一些全局的公共样式文件。js文件也是同样的道理,把js文件进行模块化,然后放进同一个js文件当中。

使用CDN

我们之前也说过CDN的原理,CDN(Content Delivery Networks)内容分发网络。他的原理就是当你请求一个内容的时候,他会在离你最近的服务器进行内容的返回。但是这个前提就是我们的网站资源应该提前放到不同的缓存服务器,一般都是一些不常更改或者依赖较少的静态资源文件。这样的举措不仅可以是请求内容快速返回,而且在web流量高峰的时候可以缓解源服务器的请求压力。

添加Expires头

我们知道这是一个与缓存相关的响应头,假如我们的网站动态内容较少的时候,可以把一些css样式文件、图片文件、静态脚本等进行缓存,当你下一次进行请求相同资源文件的时候,假如文件没有过期(Expires设定什么时候过期),就可以直接从缓存里面进行读取。但是缺点就是会受本地时间影响,你如果更改本地时间它会以你的本地时间为准。

使用Cache-Control,克服受本地时间的影响,可以设置一段时间内才会过期,比如24小时内不会过期。详情可以查看我的另一篇文章《系统总结浏览器缓存》。

压缩组件

这个方面就关于减少体积方面的内容了,假设你最后合并到只有一个文件,但是这个文件就有10MB,即使你的网络没有问题也会至少请求10s左右,这对用户来说是难以接受的。减少体积的方法也是有很多方面的,比如减少代码,去除一些无关的代码以及注释以及打印信息相关的代码。当然假如你对webpack熟悉的话就很简单了,交给插件来处理就好。另一个需要服务器的配合,就是你需要开启服务器的Gzip压缩,可以大幅度地进行代码压缩,可以配置Gzip的压缩等级,压缩等级越高你的文件越小,但是会对服务器有压力(花费CPU周期完成压缩),自己视情况而定。

样式文件放顶部/脚本文件放底部

这也是由于代码都是从上到下依次执行的,所以我们为了防止页面出现“裸奔”的情况,必须要先加载样式文件,然后再去解析DOM节点,最后才执行JS脚本。这也是因为我们执行JS代码的时候,DOM树的构建会阻塞。通过这样,我们的首页文件就会比较快速地显示出来,白屏时间减少,首屏时间也减少。

如果这样你还不满意的话,可以在加载之前进行一些骨架屏的加载,就是模仿一些内容大体骨架,待内容返回之后再显示具体内容,不会让用户觉得你的网站卡住一般。如这样的加载方式,也是很不错的实现方式。

b8a04a45871b198152b4fd01c73f224e.gif

正确使用CSS选择器

我们知道css代码的解析是从右往左开始的,因为官方经过很多实验得知从右开始匹配的方式,能够快速匹配到节点文件。但是我们应该也要注意不要使用嵌套过多的css选择器,避免css解析器的递归查询与匹配。这里我们注意的是不要使用通配符选择器*,之前我们不知道这个危险的选择器就会经常写这样的代码:

*

这个选择器的原理就是递归操作,把所有节点的样式都设置一遍,假如你的页面节点比较多的时候就比较久了,而且效率低下。正确的方法就是使用一些reset.css文件,这个文件网上一查就有,假如你是使用npm的话更简单,直接安装这个包然后使用即可,它们其实就是把一些需要设置的节点进行设置而不是所有设置。

除此之外,正确使用选择器可以有效地防止重绘和回流的情况,比如同样是隐藏一个节点,使用display:none;就会造成节点位置重新计算造成回流,开销较大;但是你使用opacity:0;仅会重绘,开销较少。

避免重定向

我们知道DNS就是通过域名来查找IP地址,然后进行TCP三次链接的。但是大家可能会忽略一个很重要的过程,就是重定向。之前我们《2020中高级前端面试题》这篇文章说过。我们可以看到重定向(302)花费的时候是比较多的,相当于多了一次请求。

d573b376e23655cb8752bd6a685a2dea.png

1103947a487db4242c7f549826e763b8.png

03 小结

前端如今是一个比较重要的职位,因为我们是离用户最近的开发人员,我们应该在性能优化方面尽可能做到令用户满意,尽可能减少一些不必要的请求以及合并代码等操作。当然这些用户是不怎么关心的,只关心你的网站是否好用,运行是否流畅等。大家可以发现其实HTML文档是比较小的,大部分你时间都是等待下载一些组件或者第三方包。

所以我们必须明确用户到底把时间都花在等待哪些东西上面,才能对症下药。比如最近做的一个vue项目打包功能,发现打包之后vendor.js文件非常之大,足有10M左右。当然这是不能忍受的,通过谷歌的控制台我发现其实它一直在请求一个.map文件,我通过webpack配置一下,不生成.map文件之后体积下降10倍,仅有1M。其实这也很大,因为把vue,vue-router以及elementui都打包进去了,我尝试使用CDN进行外部引入,打包之后项目的vendor.js文件变成700k,发现也有很多问题没有成功,最后还是换回来了。

好了,今天我们就聊到这里了,关于性能优化部分我自己也是一直在学习,以后有新的解决方案都会记录和更新一下。

5d73b54eab9c95c73bc137f3d59416a9.gif

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

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

相关文章

url 收录工具_有哪些方法可以解决最近网站收录少的问题?

夫唯8月22日我在搜外问答发起问题,收集近期收录不理想的网站情况,共65位同学参与交流。帖子地址:大家是否最近百度收录量老掉?集合帖(悬赏3元) - 搜外问答​ask.seowhy.com针对收录不理想,小伙伴们这样说:★…

更新网站 图片缓存_关于浏览器缓存你知道多少

分享一些实用或有意思的东西,发现代码之美。专注深度和最佳实践,希望打造的是一个高质量的公众号。在前端开发中,我们在提到性能优化的时候总会提到一点:合理设置缓存。我们该如何从这方面入手来考虑提高网站性能呢?前…

php+mysql动态网站开发,你还看不明白?

前言 可以说掌握这个pdf上的知识,面试问的基础知识无处左右,我凭借这个pdf拿下了OPPO/百度,京东,华为,美团,蚂蚁金服等互联网公司的offer。 下文中截图来源于朋友一个pdf版本的面经,把所以知识…

我的世界java版官方网站,讲的太透彻了

简介 基于SpringCloud(Hoxton.SR1) SpringBoot(2.2.4.RELEASE) 的 SaaS型微服务脚手架,具备用户管理、资源权限管理、网关统一鉴权、Xss防跨站攻击、自动代码生成、多存储系统、分布式事务、分布式定时任务等多个模块,支持多业务系统并行开发&#xff…

网站虚拟主机服务器选择,选择虚拟主机服务的六大要点

信息化的工作之一就是开设网站,而对大量小规模企业来讲,开设网站就涉及到虚拟主机的选择问题。这是一个看似简单,实际上却有不少“讲究”的工作。利用虚拟主机技术,可以把一台真正的主机分成许多“ 虚拟”的主机,它们之…

app 访问h5 如何截取_如何选择自适应网站建设?自适应网站建设的重要因素?...

如何选择自适应网站建设?自适应网站制作有何特点?自适应网站建设的重要因素?“自适应式网站”又被称为HTML5自适应式网站,自适应式网站做为欧美流行建站方式,现在正成为中国做网站的主导方向,越来越多做网站…

php 架构的网站 如何上传.sql文件到远程主机并用它部署数据库,技巧和诀窍: 如何上传一个.SQL文件到远程主机并且执行它来部署...

Tip/Trick: How to upload a .SQL file to a Hoster and Execute it to Deploy a SQL Database 【原文发表日期】 Thursday, January 11, 2007 12:20 AM 上个月 (英文),我讨论了新的(免费的)数据库发布向导,它是设计来充分简化在web主机环境中上传和部署…

3个月学会Java开发!mysql官方下载网站

前言 要相信,你现在所有的努力和付出都会在将来的某一天回报给你! 首先阿里巴巴作为国内互联网行业的领头羊,培养了一代又一代的IT技术人才,很多想进阿里这些互联网大厂的程序员看中的不仅仅是高薪丰厚的福利待遇,同样…

全自动化“视频网站”视频制作与发布的分布式系统介绍 - 支持 Bitrate Switching(类似Smooth Streaming)...

一、前言 从事视频后台开发工作已近三年,在掌握了必需的业务知识以及技术后,我思考着做出点成果,用来作为自己再就业时的简历或者前三个学年的主要成绩。本文我将就三大部分简单介绍这套系统的优势、特点,定能抛砖引玉&#xff1b…

5分钟搞定!java免费源码网站

一、前言 最近刚读完一本书:《Netty、Zookeeper、Redis 并发实战》,个人觉得 Netty 部分是写得很不错的,读完之后又对 Netty 进行了一波很好的复习(之前用 spring boot netty zookeeper 模仿 dubbo 做 rpc 框架,那时…

零基础个人网站搭建教程(一个完全的新人如何搭建自己的个人网站)

花了一整天时间写的。混迹网络多年,现在又是it圈的一员,大大小小的网站也都做过。所以今天我想详细的给大家来一篇:零基础个人网站搭建教程,动手能力强的同学应该看完就会了。 WordPress: WordPress是使用PHP语言开发的…

零基础,最完整的建站教程

授人以鱼不如授人以渔“,这篇文章演示一下如何使用网络上开源免费网站程序搭建网站,最后会完成一个WordPress博客网站的搭建,但是方法是通用的,你可以把WordPress换成其他的程序,比如社区论坛,电商网站等都…

在IIS中使用SSL配置HTTPS网站(转)

由于Windows系统的普及,很多中小企业在自己的网站和内部办公管理系统都是用默认的IIS来做WEB服务器使用。默认情况下我们所使用的HTTP协议是没有任何加密措施的,所有的消息全部都是以明文形式在网络上传送的,恶意的攻击者可以通过安装监听程序…

如何快速搭建个人网站

今日科技快讯针对近日坊间流传的“我们天天在看你的微信”一说,微信团队今天发表声明重申三条用户隐私原则:1、微信不留存任何用户的聊天记录,聊天内容只存储在用户的手机、电脑等终端设备上;2、微信不会将用户的任何聊天内容用于…

搭建个人网站教程:阿里云+WordPress

以下教程简单易懂,不需要复杂的环境配置即可完成个人网站的搭建。 Step1:购买阿里云的服务器 这里我选择了“轻量应用服务器”(如果是搭建个人网站,容量小一点就行,不需要太大),镜像选择&…

超详细搭建个人网站教程,附带各种常见报错解决方案。

文章目录前言解惑环节准备工作环境配置一、安装二、环境配置1.cnpm安装2.Hexo安装可能报错和问题:博客初始化1、博客搭建可能报错和问题:2、博客测试可能报错和问题主题更换可能报错和问题:部署到云端1、创建库2.配置本地3.安装插件4.部署云端…

超详细的网站搭建教程使用阿里云RDS和ECS搭建个人博客网站

今天讲一讲如何利用云数据库、云服务器、word press搭建博客网站 1、注册阿里云账号 2、购买云数据库RDS(MySQL) 3、购买云服务器ECS 4、配置数据库 5、配置服务器 6、部署LAMP环境【Apache、MySQL、PHP、wordpress】 1、注册阿里云账号 浏览器搜索阿…

分布式解决方案-解决网站跨域请求

1.什么是网站跨域 跨域原因产生:在当前域名请求网站中,默认不允许通过ajax请求发送其他域名。 两个项目之间使用ajax(前端类似后端的httpclient)实现通讯,如果浏览器访问的域名和端口与ajax请求访问的地址不一样的情况下,…

互联网公司都在用什么语言写网站后端?

2019独角兽企业重金招聘Python工程师标准>>> 豆瓣 python 淘宝 php 百度 php python 优酷 java php 谷歌 python youtube python facebook php wikipedia php twitter ruby 看来php和python平分秋色&…

开发高性能网站的web性能测试工具

开发高性能网站的web性能测试工具文章分类:Web前端 WEB性能测试工具主要分为三种,一种是测试页面资源加载速度的,一种是测试页面加载完毕后页面呈现、JS操作速度的,还有一种是总体上对页面进行评价分析,下面分别对这些工具进行介绍…