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

news/2024/5/9 14:54:52/文章来源:https://blog.csdn.net/shadow_zed/article/details/88095667

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

 

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-Unmodified-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,还是用图解比较明了

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

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

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

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

相关文章

4月第三周域名主机网站Top15:域名城跃居第5

据国际统计机构Alexa公布的最新数据显示&#xff0c;4月第三周&#xff08;4月16日-4月22日&#xff09;&#xff0c;国内域名主机网站覆盖率排名前三的依旧是中国万网、西部数码和易名中国。其中&#xff0c;万网周均用户覆盖数达1550&#xff0c;西部数码为630&#xff0c;易…

8月第四周IT类网站/频道排名:天极网保持第二

中国IDC评述网08月31日报道&#xff1a;近日&#xff0c;根据国际统计机构Alexa公布的最新数据显示&#xff0c;8月第四周&#xff08;2012-8-20到2012-8-26&#xff09;&#xff0c;我国IT类网站/频道排名中&#xff0c;太平洋电脑网以5300的周均用户覆盖数排名第一&#xff0…

MVC4.0网站发布

一、VS2010下MVC4.0项目的发布 首先&#xff0c;生成网站发布文件。 第一步&#xff0c;"右击"要发布的MVC4.0项目&#xff0c;选择"发布(B)..."选项&#xff0c;如图&#xff1a; 第二步&#xff0c;在"发布web"对话框中进行设置&#xff0c;配…

SSL证书相关技巧 -- 如何访问一个网站,其证书不在系统证书列表中

引入&#xff1a; 前面文章说到&#xff0c;操作系统会吧一些网站需要的SSL证书添加到其证书管理器中&#xff0c;但是世界上毕竟网站太多了&#xff0c;操作系统不可能一一添加证书到列表&#xff0c;而且这种网站很多&#xff0c;比如下面例子中的中国铁道部订票网站&#xf…

源码安装构建网站架构

好久没写些博客了 刚刚找到工作&#xff0c;工作没几天就有幸参与了公司网站的拆分项目 今天就写这些东西 主要是用来熟悉下源码安装的过程 方便自己的记忆 项目名称&#xff1a;数据库以及应用的拆分项目需求&#xff1a;由于网站的后台数据库的日益增长造成数据库过大 数据库…

如何下载视频网站中video标签中的视频资源以blob:http开头的地址的资源

一、问题场景 想下载知乎视频资源&#xff0c;却发现视频链接是这个样子的 blob:https://v.vzuu.com/b6146956-6e52-406d-8909-f3f1b81ae461 当时一脸懵比啊 ~难道blob:https是什么牛逼的新协议&#xff1f;于是进行了一番探索 二、探寻结论 结论就是blob:https并不是一种协议…

各位ccflow爱好者, 驰骋企业门户网站与虚拟机发布了,虚拟机包含了ccflow, ccoa......

为什么80%的码农都做不了架构师&#xff1f;>>> 各位ccflow爱好者, 驰骋企业门户网站与虚拟机发布了,虚拟机包含了ccflow, ccoa, ccim, ccgpm,ccsso. 各位ccflow爱好者: 驰骋企业门户网站试运行: http://ccport.org 虚拟机&#xff1a;包含流程引擎、权限管理、单…

SEO人员必懂的几个高级搜索指令

一些常用的高级搜索指令&#xff0c;平常人可能不太了解&#xff0c;但对于SEO人员来说是必须要懂的&#xff0c;因为通过这些高级搜索指令&#xff0c;我们可以更好的查看和分析数据&#xff0c;为网站优化提供依据。常见的高级搜索指令有哪些呢&#xff1f; 1、site指令&…

最好的网站宣传方法:网摘精灵

最好的网站宣传方法:网摘精灵网摘精灵软件名称&#xff1a;网摘精灵 软件语言&#xff1a;简体中文 当前版本&#xff1a;1.0 适用平台&#xff1a;windows 9x/windows me/windows 2000/windows xp/windows 2003/ 软件类型&#xff1a;国产软件/免费版/网络辅助/网站推广 发布日…

ASP.NET网站实现现场直播

此博文省略了流媒体服务器组建(网络管理员的事)。 可以先看到截图&#xff1a; 把下面的js代码&#xff0c;另存为LiveBroadcast.js文件&#xff0c;存在专案中的js目录中&#xff1a; LiveBroadcast.js function Fulls() {try {if (document.all.Media.playState 3) { docume…

ASP.NET MVC5 网站开发实践(二) Member区域 - 用户部分(3)修改资料、修改密码

在上一篇博客中实现了用户的注销和登录&#xff0c;其实代码里落了点东西&#xff0c;就是用户登录要更新最后一次登录时间和登录IP&#xff0c;这次补上。今天做修改资料和修改密码&#xff0c;TryUpdateModel是新用到的东西。 目录&#xff1a; ASP.NET MVC5 网站开发实践 - …

给理工男女的一个神奇网站

十一长假已经只剩下最后两天&#xff0c;你给自己定下的假期学习计划进展如何&#xff1f; 你是在家&#xff0c;还是在想家&#xff0c;还是在其他国家&#xff1f; 为了让家里蹲的诸位不虚度光阴&#xff0c;也为了让那些堵在高速路上的童鞋打发时间&#xff0c;现隆重给大…

想做一个显示全国火车运行图的网站(5)误操作

误操作&#xff0c;想把火车站基本信息和wiki信息分到两张表中&#xff0c;在复制坐标列时忘记把数据也导过来就删除了源表的列&#xff0c;丢了所有的地标数据。 找备份&#xff0c;本来有一个作业是三天备份一次数据库的&#xff0c;但是今天一看&#xff0c;忘记在Sql Serve…

IE11兼容性问题——网站提示“打印插件只支持IE浏览器”

很多系统已经自动升级到IE11&#xff0c;会出现兼容性问题——网站提示“打印插件只支持IE浏览器”解决方法&#xff1a;浏览器“工具”——“兼容性视图设置”&#xff0c;打开以下窗口将相关网址添加到列表中&#xff0c;点击“关闭”&#xff0c;刷新网页即可打印。转载于:h…

LVS-DR+Keepalived网站服务器双机热备配置

keepalived是一个类似于layer3, 4 & 7交换机制的软件&#xff0c;也就是我们平时说的第3层、第4层和第7层交换。Keepalived是自动完成&#xff0c;不需人工干涉。调度服务器&#xff1a;需要在LVS的基础上面做。参考上两节&#xff1a;负载均衡群集之一LVS-DR&#xff1a;h…

演练:使用多种编程语言开发网站

演练&#xff1a;使用多种编程语言开发网站默认情况下&#xff0c;App_Code 文件夹不允许使用多种编程语言。不过&#xff0c;您可以将 Web 应用程序结构和配置设置修改为支持多种编程语言&#xff0c;如 Visual Basic 和 C#。这样&#xff0c;ASP.NET 就可以创建多个程序集&am…

网站的高性能架构---应用服务器性能优化

应用服务器就是处理网站业务的服务器&#xff0c;网站的业务代码都部署在这里&#xff0c;是网站开发最复杂&#xff0c;变化最多的地方&#xff0c;优化手段主要有缓存、集群和异步等。 分布式缓存缓存无处不在&#xff0c;既存在于浏览器、也存在于服务器和数据库&#xff1b…

LAMP学习之linux下论坛网站搭建及测试

LAMP环境下论坛的搭建安装mysql过程 http://zhibing.blog.51cto.com/846805/192930安装apachePHP过程http://zhibing.blog.51cto.com/846805/194124首先下载一个论坛程序&#xff0c;本文以PHPWind为例安装过程详解[rootzhibing ]#mkdir /usr/local/apache/htdocs/bbs //在A…

推荐一个激动人心的Silverlight网站应用

先给出围观地址&#xff1a;http://www.vsallaccess.com/index.html 该网站不仅外表华丽&#xff0c;而且使用了很多silverlight3的新特性&#xff08;如3d变换&#xff0c;导航等&#xff09;&#xff0c;绝对会让踌躇不前的silverlighter们振奋起来 左侧菜单中鼠标滑过时的绚…