前端面试中经常问到的问题:如何提高网站性能 总结

news/2024/4/28 22:13:12/文章来源:https://blog.csdn.net/weixin_34071713/article/details/88816990

1. 使用dns预解析

DNS 请求需要的带宽非常小,但是延迟却有点高,这点在手机网络上特别明显。预读取 DNS 能让延迟明显减少一些,例如用户点击链接时。在某些情况下,延迟能减少一秒钟。
在某些浏览器中这个预读取的行为将会与页面实际内容并行发生(而不是串行)。正因如此,某些高延迟的域名的解析过程才不会卡住资源的加载。
这样可以极大的加速(尤其是移动网络环境下)页面的加载。在某些图片较多的页面中,在发起图片加载请求之前预先把域名解析好将会有至少 5%的图片加载速度提升。
你可以通过在服务器端发送 X-DNS-Prefetch-Control 报头,或是在文档中使用值为 http-equiv 的 <meta>标签:

打开和关闭 DNS 预读取

在高级浏览器中a标签是默认打开预解析的,但是在https协议中是默认关闭的,此句话是强制打开a img script等 标签的预解析
<meta http-equiv="x-dns-prefetch-control" content="off">
link标签的dns预解析
<link rel="dns-prefetch" href="//host_name_to_prefetch.com">
您可以通过将 content 的参数设置为“on”来改变设置。

强制查询特定主机名

你可以通过使用 rel 属性值为 link type 中的 dns-prefetch 的 <link> 标签来对特定域名进行预读取:
<link rel="dns-prefetch" href="http://www.spreadfirefox.com/">
在这个例子中,Firefox将预解析域名"www.spreadfirefox.com"。

而且,<link> 元素也可以使用不完整的 URL 的主机名来标记预解析,但这些主机名前必需要有双斜线:

<link rel="dns-prefetch" href="//www.spreadfirefox.com">
强制对域名进行预读取在有的情况下很有用, 比如,
在网站的主页上,强制在整个网站上频繁引用的域名的预解析,即使它们不在主页本身上使用。即使主页的性能可能不受影响,这将提高整体站点性能

2.资源压缩合并,减少HTTP请求

通过webpack,grunt等打包工具,对于js,css文件进行打包成单个的js以及css,使用gzip进行代码压缩,从而减少请求文件的大小以及数量,每个js,css文件的加载都要发送一次http请求,所以通过合并js,css文件从而减少http请求次数。

3.浏览器缓存

1.强缓存

  • Expire(绝对时间,下发的服务器时间,有可能客户端和服务端时间不一致。Expire:Thu,21 Jan 2017 23:39:02
    GMT);
//在前端<head>标签中设置
<meta http-equiv="expires" content="0">  //在后端设置
response.setDateHeader("Expires",date.getTime()+20000); //Expires:过时期限值 
response.setDateHeader("Expires", 0);//不允许浏览器端或缓存服务器缓存当前页面信息。
  • Cache-Control(相对时间,按照客户端时间,3600秒内使用缓存。Cache-Control:max-age=3600)
//在前端<head>标签中设置
<meta http-equiv="cache-control" content="no-cache">//在后端设置
response.addHeader( "Cache-Control", "no-cache" );//浏览器和缓存服务器都不应该缓存页面信息

在http响应头中,如果两个时间都有,以Cache-Control为准

2.协商缓存(问一下服务器)

Last-Modified(服务器下发的响应头中加,Last-Modified:Thu,21 Jan 2017 23:39:02 GMT)
If-Modified-Since,(http请求头中加,时间和Last-Modified下发的一致,缺点:文件没变但时间过期,会再次加载
//在后端设置
response.setDateHeader("Last-Modified",date.getTime()); //Last-Modified:页面的最后生成时间 
Etag (哈希值,服务器下发的响应头中加,文件没改变可继续使用缓存) If-None-Match(http请求头中加,时间和Etag下发的一致)
//响应消息头
Etag:"a030f020ac7c01:1e9f" 

关于下面这些HTTP请求头部字段以及相关的http知识,可以去阅读 《图解http》一书,对此有详细的文字跟图解

  • Expire
  • Cache-Control
  • Last-Modified
  • If-Modified-Since
  • If-Modified-Since
  • If-None-Match

4.异步加载

异步加载的方式:

1.动态脚本加载(动态创建节点:document.createElement("/script/"),用js创建一个标签,再加到文档中);
2.defer(在script标签中加上此属性);
3.async(在script标签中加上此属性)。
异步加载的区别:
1.defer是在HTML 解析完 之后才会执行,defer属性规定是否对脚本执行进行延迟,直到页面加载为止,如果是多个,按照加载的顺序依次执行 ;
2.async是在加载完之后 立即执行 ,async属性规定一旦脚本可用,则会异步执行,如果是多个,执行顺序和加载顺序无关。
这里来一张defer跟async,还是用图解比较明了

clipboard.png

clipboard.png

此图告诉我们以下几个要点:

defer 和 async 在网络读取(下载)这块儿是一样的,都是异步的(相较于 HTML 解析)
它俩的差别在于脚本下载完之后何时执行,显然 defer 是最接近我们对于应用脚本加载和执行的要求的 关于
defer,此图未尽之处在于它是按照加载顺序执行脚本的,这一点要善加利用 async
则是一个乱序执行的主,反正对它来说脚本的加载和执行是紧紧挨着的,所以不管你声明的顺序如何,只要它加载完了就会立刻执行 仔细想想,async
对于应用脚本的用处不大,因为它完全不考虑依赖(哪怕是最低级的顺序执行),不过它对于那些可以不依赖任何脚本或不被任何脚本依赖的脚本来说却是非常合适的,最典型的例子:Google
Analytics

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

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

相关文章

关于大型网站技术演进的思考(十八)--网站静态化处理—反向代理(10) 【架构师的想法:正向代理和反向代理的区别】

文章来源&#xff1a;http://www.cnblogs.com/sharpxiajun 架构师&#xff1a;夏天的森林 反向代理也是一种可以帮助实现网站静态化的重要技术&#xff0c;今天我就来讲讲反向代理这个主题。那么首先我们要了解下什么是反向代理。和反向代理相对应的是正向代理&#xff0c;正向…

js对cookie的操作,包括清除网站所有cookie

2019独角兽企业重金招聘Python工程师标准>>> function foreach() {var strCookiedocument.cookie;var arrCookiestrCookie.split("; ");for(var i0;i<arrCookie.length;i){var arrarrCookie[i].split("");if(arr.length>0)DelCookie(arr[…

如何拒绝搜索引擎收录自己的网站?

参考1&#xff1a;https://zhidao.baidu.com/question/543972314.html 参考2&#xff1a;https://jingyan.baidu.com/article/e8cdb32b45b3e837042bad7f.html 请复制以下两行代码&#xff1a; User-agent: * Disallow: / 把上面的两行代码保存为Robots.txt文件&#xff0c;放…

网站安全狗V3.2版 增加URL地址全检测功能 保护网站安全

文章来源&#xff1a;http://my.oschina.net/safedog/blog/260885 原 网站安全狗V3.2版 增加URL地址全检测功能 保护网站安全 发表于2年前(2014-05-05 18:15) 阅读&#xff08;134&#xff09; | 评论&#xff08;0&#xff09; 0人收藏此文章, 我要收藏赞012月12日北京OSC源…

python之web开发二:用Python+Django在Eclipse环境下开发web网站【第一个开发的小案例,按照文章可以成功开发web】

http://www.cnblogs.com/linjiqin/p/3595891.html 用PythonDjango在Eclipse环境下开发web网站 一、创建一个项目 如果这是你第一次使用Django&#xff0c;那么你必须进行一些初始设置。也就是通过自动生成代码来建立一个Django项目--一个Django项目的设置集&#xff0c;包含了…

服务器做jsp网站教程视频,linux jsp服务器 视频教程

linux jsp服务器 视频教程 内容精选换一换本节介绍如何构造REST API的请求&#xff0c;并以调用IAM服务的获取用户Token说明如何调用API&#xff0c;该API获取用户的Token&#xff0c;Token可以用于调用其他API时鉴权。您还可以通过这个视频教程了解如何构造请求调用API&#x…

用户评论与问答:对熊掌号SEO的影响!

在传统SEO中&#xff0c;我们经常强调用户体验度&#xff0c;包括&#xff1a;页面的活性与内容质量&#xff0c;它往往是高排名的一个典型代表&#xff0c;简单举例&#xff1a;①博客评论&#xff1a;提高页面更新频率&#xff0c;增强搜索引擎信任度。②问答页面&#xff1a…

Lambda架构与推荐在电商网站实践

Lambda架构与推荐在电商网站实践 2015-11-24 16:36| 发布者: 炼数成金_小数| 查看: 14636| 评论: 0|原作者: 王富平|来自: 高可用架构 摘要: 高可用架构分享及传播在架构领域具有典型意义的文章&#xff0c;本文根据王富平分享记录。转载请注明高可用架构公众号ArchNotes。王富…

网站常见问题1分钟定位 - 如何使用阿里云ARMS轻松重现用户浏览器问题...

客户投诉不断&#xff0c;本地却无法重现&#xff1f; 页面加载较慢是用户经常会反馈的问题&#xff0c;也是前端非常关注的问题之一。但定位、排查解决这类问题就通常会花费非常多的时间&#xff0c;主要原因如下&#xff1a; 页面是在用户端的浏览器上加载执行&#xff0c;复…

部署社交网站

部署社交网站 案例概述 公司的社交网站采用PHP语言开发&#xff0c;为了管理PHP程序员开发的代码&#xff0c;上级领导要求搭建SVN服务器进行版本控制。社交网站的第一个版本部署在LNMP平台上&#xff0c;前端为Nginx&#xff0c;通过fastcgi协议访问后端的PHP服务器。为了保证…

网站被黑跳转到其他网站的解决办法

前几天&#xff0c;有一客户向我们SINE安全公司反映&#xff0c;网站在google上的推广已拒登&#xff0c;说什么网站存在恶意软件或垃圾软件&#xff0c;导致google广告无法上线&#xff0c;还发现网站从google搜索点击进去会直接跳转到其他网站上&#xff0c;直接输入网址不会…

接入高防后为什么有一些网站,APP等会出现延迟,打开速度慢等问题?...

我们常见的一些网站&#xff0c;APP等用户在接入高防后&#xff0c;会出现延迟&#xff0c;打开速度慢等问题&#xff0c;假如出现这样的情况请大家不要惊慌失措&#xff0c;短暂的时间内出现延迟&#xff0c;打开速度慢是正常的。 以下墨者安全给大家分享下原因&#xff1a;1、…

Ajax_实现动态网站的技术、php语法、php接口、前端渲染和后端渲染

1、实现动态网站的技术&#xff08;后端语言&#xff09; php、java&#xff08;jsp和php语言差不多&#xff09;、.net、Nodejs、python。。。 最简单的是学php 2、php基本语法  js中 js代码用script包起来&#xff0c;php中用<?php ?>包起来后&#xff0c;可以放…

后端服务开启gzip_网站怎么开启Gzip压缩?网站开启Gzip压缩的方法,让网站提速数倍!...

什么是Gzip压缩&#xff1f;Gzip压缩一般是指web服务器中的一个功能&#xff0c;当有人来访问这个服务器中的网站时&#xff0c;服务器中的这个功能就将网页内容压缩后传输到来访的电脑浏览器中显示出来&#xff0c;一般对纯文本内容可压缩到原大小的40&#xff05;。这样传输就…

dev c++为什么会显示无法更改到模板目录_Kali Linux下Dirb工具web网站目录爆破指南...

在本文中&#xff0c;我们将重点介绍使用Kali Linux工具DIRB的临时目录&#xff0c;并尝试在Web服务器中查找隐藏的文件和目录。一个路径遍历攻击也被称为“目录遍历”目标访问的文件和目录存储在Web根文件夹之外。通过使用带有“ ..”的序列的引用文件及其变体来操纵变量&…

采用建站cms制作企业网站的好处

随着网络的发展和普及&#xff0c;现在各行各业开展业务都离不开网络推广&#xff0c;而网络营销推广的标配就是企业必须有一个企业网站&#xff0c;目前做企业网站制作主要有两个方法&#xff0c;一种找网络公司开发&#xff0c;一种利用cms来制作网站&#xff0c;那么建站cms…

大型网站技术架构(八)网站的安全架构

2019独角兽企业重金招聘Python工程师标准>>> 从互联网诞生起&#xff0c;安全威胁就一直伴随着网站的发展&#xff0c;各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。 1、XSS攻击 XSS攻击即跨站点脚本攻击&#xff08;…

网站api自己怎么写_短视频文案怎么写?看这4个素材网站就够了

短视频文案很难吗&#xff1f;对于小白来说挺难的。但也不用特别担心&#xff0c;接下来豌豆豆会跟大家分享一些方法跟技巧&#xff0c;方便大家快速入门。一般有三个方法。01观点/事件转折因为观点也好&#xff0c;事件也好&#xff0c;都是大家平常熟知的点&#xff0c;所以在…

电脑维修网站源码_搭建一个网站所需要的准备有哪些?

搭建一个网站到互联网上所需要的东西1.域名2.服务器3.FTP上传工具4.网站源码解释一下&#xff0c;我们将一个网站比作房子&#xff0c;域名(网址&#xff1a;www.xxxxxx.com)如同门牌号&#xff0c;服务器地皮&#xff0c;而我们的网站源码就是相当于房子。需要注意的一点是&am…

网页设计 滑块控制_设计神器!5分钟就能上手的动态文字生成网站 – Space Type Generator - 优优教程网...

你是不是在为不会使用AE、C4D制作动效很头疼&#xff1f;或者在为制作灵感而烦恼&#xff1f;又或是因为制作动效麻烦繁琐而熬夜秃头&#xff1f;今天小编为你带来超炫酷超强大动效文字生成器——Space Type Generator&#xff0c;让你通过简单的参数调整就能创造无限种创意可能…