大型网站技术架构(3):WEB 前端性能优化

news/2024/5/20 8:40:32/文章来源:https://blog.csdn.net/gdzjsubaoya/article/details/99900079

撸了今年阿里、头条和美团的面试,我有一个重要发现.......>>> hot3.png

上次说到了性能优化策略,根据网站的分层架构,可以大致的分为 web 前端性能优化,应用服务器性能优化,存储服务器性能优化三大类

这次来说一下 web 前端性能优化,一般来说,web 前端就是应用服务器处理之前的部分,包括浏览器渲染、加载,前端视图模型,图片视频资源,CDN 服务等,主要优化方法就是优化浏览器访问渲染过程,使用反向代理,使用 CDN 服务等

浏览器访问渲染优化

减少 http 请求数

http 协议是无状态的应用层协议,每次 http 请求都会建立新的通信链路,并且在服务端,每个 http 连接都会开启一个单独的线程去处理请求,这都会产生额外的开销

主要手段就是去合并压缩 css,JavaScript,图片文件,把需要的 css,JavaScript,图片资源进行合并减少建立的连接请求数

同时使用 http 的 keep-alive 来进行连接的复用,以此来减少建立的 http 连接数,提高访问性能

启用压缩

在服务端进行文件的压缩,减少通信传输过程中的数据量

对于文本文件,压缩率能够达到 80% 以上,因此在服务端启用 gzip 压缩是一个很好的选择,但启用压缩的同时也会给服务器带来额外的开销,所以要具体情况具体分析

css,JavaScript 代码优化

  • css 代码优化:

    • 尽量使用外部样式,并且放在页面顶部加载,一方面能够及时渲染,另一方面能够避免因某些样式导致阻塞渲染

    • 压缩合并 css 文件,尽量精简文件,减少通信传输数据量和请求连接数

  • JavaScript 代码优化:

    • 因为 JavaScript 代码边加载边解析,解析的过程会阻塞浏览器渲染,因此把 JavaScript 代码放在页面底部加载

    • 同样的压缩合并 JavaScript 文件,尽量精简文件,减少通信传输数据量和请求连接数

    • 写高性能的 JavaScript 代码

使用浏览器缓存

一般来说,对于网站里面不经常变化的静态资源,更新频率比较低,因此可以把这些资源缓存在浏览器中,能够很好的改善性能

通过设置 http 头里的 Cache-Control 和 Expires 属性来设定浏览器缓存时间

另外还有 Etags 和 opcode 的缓存,根据具体情况进行选择吧

CDN 加速

CDN 的本质也属于缓存,内容分发网络,把数据缓存在里用户近的地方,使用户尽快的获取数据

因为 CDN 都是部署在网络运营商的机房,这些运营商又同时为用户提供网络服务,因此用户请求的路由会优先到达 CDN 服务器,如果存在请求的资源的话,就直接返回,最短路径返回响应,加速用户访问速度,同时还能够为中心机房减轻压力

bVF9KG?w=573&h=428

CDN 一般用来缓存静态资源,css,Script 脚本,静态页面,图片等,这些内容修改频率很低但是访问请求频率很高,因此放在 CDN上能够很好的改善访问速度

反向代理

传统的代理服务器是当你请求不到所请求的资源时,由代理服务器帮你请求,你知道你请求的最终的服务器是谁,典型的例子就是VPN,通过代理服务器来请求到墙外的世界

而反向代理是当你请求一个地址时,你请求的是反向代理服务器,然后由反向代理服务器去请求其他服务器来获取内容,而你不知道最终是从哪一台服务器获取到的数据

反向代理 web 服务器接收 http 请求,然后进行请求转发,获取到内容后返回给你,你只知道是由反向代理服务器给你的数据,而不知道数据源最终是从哪个服务器来的

bVF9KN?w=586&h=338

反向代理服务器具有保护作用,来自互联网的请求都需要经过反向代理服务器,相当于在 web 服务器之间建立起了一道屏障

除了安全以外,可以在反向代理服务器上进行一些静态资源的缓存,以此来提高访问速度,减轻应用服务器的负载压力

当然,有些动态资源也可以缓存在代理服务器上面,比如说热门的词条,帖子,博客等,这些资源的请求量可能非常非常的大,如果每次都走一遍流程的话会造成很大的压力,同时,当这些动态内容发生改变时,会通知反向代理服务器缓存失效,代理服务器会重新缓存动态资源

除此之外,反向代理服务器还可以用来做负载均衡,通过负载均衡来构建服务器集群,以此来提高系统的总体处理能力,进而应用提高服务器处理高并发的能力

PS:使用 ajax 也是提高用户体验很好的方法,不过 ajax 对于 SEO 并不友好,所以需要用到 SEO 的地方还是要考虑好是否要用ajax

好了,关于 web 前端优化就写到这里,下次会继续写应用服务器性能优化,存储服务器性能优化

大型网站技术架构(1)
大型网站技术架构(2):架构要素和高性能架构
大型网站技术架构(3):WEB 前端性能优化

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

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

相关文章

网站样式快速设计软件_如何(快速)设计样式指南

网站样式快速设计软件 Creating a styleguide is often a lengthy, decision-intensive exercise. Most large organizations will spend loads of time and money to make sure it fully encompasses their brand, company culture, and all of their design and marketing ne…

快速的UX批评:Kanye West的总统签名收集网站

Before we get started, I have to say that I am not at all commenting on Kanye’s politics or his right to run for office. Mostly because I don’t know what his politics are, but also because I want to keep this about 在我们开始之前,我不得不说&a…

在网站中内置WebRTC视频聊天

http://mozilla.com.cn/post/51923/ 在网站中内置WebRTC视频聊天 0 Felicia, 1116 我想大部分人应该都还记得“你好Chrome,火狐正在呼叫!”的博客和Demo,向大家展示了在火狐和Chrome中进行WebRTC视频聊天,获得了很多朋友的注意。从…

LAMP网站架构方案分析

LAMP网站架构方案分析 LAMP网站架构方案分析 LAMP(Linux-Apache-MySQL-PHP)网站架构是目前国际流行的Web框架,该框架包括:Linux操作系统,Apache网络服务器,MySQL数据库,Perl、PHP或者Python编程…

Android webview中定制js的alert,confirm和prompt对话框的方法 (处理webview 带网站地址的弹出框)

在Android的webview中定制js的alert,confirm和prompt对话框的方法 http://618119.com/archives/2010/12/20/199.html 1.首先继承android.webkit.WebChromeClient实现MyWebChromeClient。 2.在MyWebChromeClient.java中覆盖onJsAlert,onJsConfirm,onJsPrompt三个方法。 3.在初…

网站加速--动态应用篇 (上)

--提升性能的同时为你节约10倍以上成本 From: http://blog.sina.com.cn/iyangjian 一, 引子 二,总体结构图 三,系统结构综述 四,环境配置以及底层基础类库 五, Memcache & Mysql 常用场景案例 六,更多待续 ...... -----------…

网站加速--动态应用篇 (下)

--提升性能的同时为你节约10倍以上成本 From: http://blog.sina.com.cn/iyangjian五, Memcache & Mysql 常用场景案例 经典篇: 更新数据: 写全局MC,然后再写DB。 读数据: 先读MC,命中返回数据。不命中则读DB&#…

jsp网站引入外部css或者js失效原因分析

路径问题 css或者js导入失效最有可能的原因就是路径错误&#xff0c;这里我给出我的网站目录结构导入css代码&#xff1a;<link rel"stylesheet" type"text/css" href"css/login.css"> 记得jsp头部需要设置相对路径&#xff1a;<%Strin…

2017 年最受欢迎的 10 个编程挑战网站

译者注&#xff1a;如果你想不断地提高自己的编程技能&#xff0c;那么不断尝试去解决那些编程中的难题&#xff0c;这是一个非常不错的途径。作者在本篇文章中列举出了10个编程挑战网站&#xff0c;你想尝试一下吗&#xff1f;以下为译文。 如果你正在在学习编程&#xff0c;那…

什么是静态网站?什么是动态网站?

什么是静态网站&#xff1f;什么是动态网站&#xff1f;对于从没有接触过网站建设的朋友来说&#xff0c;这个问题还是没有真正的了解&#xff0c;许多朋友至今还认为动态网站就是网页中有flash动画&#xff0c;即会动的东西&#xff0c;才是动态网站&#xff0c;这样的理解是会…

什么是静态网站?什么是动态网站?

什么是静态网站&#xff1f;什么是动态网站&#xff1f;对于从没有接触过网站建设的朋友来说&#xff0c;这个问题还是没有真正的了解&#xff0c;许多朋友至今还认为动态网站就是网页中有flash动画&#xff0c;即会动的东西&#xff0c;才是动态网站&#xff0c;这样的理解是会…

wamp下Apache构建局域网下的个人电脑服务器(网站根目录更改)

第一步&#xff1a;在安装盘下找到wamp64文件夹&#xff08;我安装在D盘&#xff09;。 第二步&#xff1a;在wamp64文件夹下找到bin文件夹。 第三步&#xff1a;在bin文件夹下找到Apache文件夹。 第四步&#xff1a;在Apache文件夹下找到apache2.4.27文件夹&#xff08;不同的…

用phpcms如何将静态页面制作成企业网站(中)

上篇博客中讲到了该修改网页的中间部分 中间的内容是这样的&#xff0c;有标题和内容&#xff0c;里面的内容被代码替代,运行起来就这样的 里面的内容就可以在后台管理那里添加 再来看代码部分 <div class"dt-double" style"left: 18.5%;"><!--…

10个PPT演示用图片下载网站

其中很多都支持TAG和标签搜索&#xff0c;比如在制作团队管理和建设的幻灯片的时候&#xff0c;可以直接使用Team&#xff0c;Teamwork等即可以搜索到很多有价值的图片。 1. istockphoto One of the best stock photo libraries around for price verses quality. Images from …

网站运维:PHPCMSV9安装教程

1、环境 CentOS Linux release 7.3.1611 XAMPP7.3.62、软件下载 http://download.phpcms.cn/v9/9.6/phpcms_v9.6.3_UTF8.zip 3、复制到安装位置 /opt/lampp/htdocs/ 4、开始安装 浏览器打开 http://www.baidu.com/install_package/ 即可打开安装引导 5、引导首页 6、设置…

网站运维:PHPCMS V9搭建二级域名管理后台

方法暂时不行&#xff0c;设置了二级域名&#xff0c;登上是首页&#xff0c;欢迎留言解决问题。 1、环境 centos7 xampp7.3.6 phpcms v92、设置方法1 PS&#xff1a;绑定后&#xff0c;只能通过该域名登录&#xff0c; 配置保存在 /caches/configs/system.php中&#xff0c;…

网站运维:phpcms重新安装方法

1、删除文件 网站根目录/caches/install.lock

网站运维:解决 drupal8 提示“ settings.php 中的 trusted_host_patterns ”设置未配置 问题

1、环境&#xff1a; drupal 8.7.3 centos 7 2、 添加代码 2.1、找到当前网站目录下的sites/default中的default.settings.php文件。 2.2、复制default.settings.php文件并改名为settings.php。 2.3、添加以下代码 博主的网站为cloudsystem.work $settings[trusted_host_pa…

网站运维:centos7安装Drupal8.7.3

1、环境 centos7.5 xampp7.3.62、Drupal官网 https://www.drupal.org/ 3、下载文件 安装包 https://ftp.drupal.org/files/projects/drupal-8.7.3.tar.gz 中文翻译 http://ftp.drupal.org/files/translations/8.x/drupal/drupal-8.7.3.zh-hans.po 3、安装 3.1 解压 tar …