优化页面访问速度(四) ——前端优化

优化页面访问速度(四)

——前端优化

一、概述

前端的优化,主要可以通过减少HTTP请求、非实时请求改异步、缓存、文件压缩、CDN加速、独立图片服务器等。

二、减少HTTP请求

1、HTTP开销

HTTP请求,需要耗费资源,主要包括域名解析、建立TCP连接、发送请求、等待处理结果、下载资源、解析请求等。

因此,减少HTTP请求,利于优化页面访问速度。

2、图片地图

对于多个图片,如连续的几个按钮,每个按钮都是一个小图片。如果逐个加载图片,则需要发送多个请求,分别获取这些图片文件。

这里,可以将这些图片合并成一张图片,并且用CSS的<map>、<area>来实现定位,针对不同的位置给予不同的点击跳转链接,这样有效减少请求数量。

三、异步请求

对于实时性要求不高的请求,例如记录文章访问量,就可以在进入页面后,加载完毕后,再发送ajax给服务端,进行统计,即可。不需要同步等待,节约时间。

四、缓存

缓存分为浏览器缓存和Nginx层缓存。

1、浏览器

浏览器缓存又分为本地缓存和协商缓存,本地缓存即缓存在浏览器端,协商缓存是缓存在服务端。

1)本地缓存

本地缓存的http状态码是200 from cache,可以在header设置本地缓存,字段是cache-control,参数包括no-store(禁止缓存)、no-cache(禁止本地缓存,允许协商缓存)、max-age=xxx(设置本地缓存的最大时间,单位是秒)。

2)协商缓存

协商缓存的http状态码是304 not modify,浏览器没有命中本地缓存时,或者cache-control字段被设置了no-cache,则浏览器会去服务端请求内容,并在响应头的header中带上参数,if-modified-since表示最后修改时间,if-none-match是文件的指纹(修改后即会有变化)。

服务端会根据参数,判断是否用服务端的协商缓存,并且返回结果给客户端时,会带上响应头参数,Last-modified表示上次请求的时间,ETag表示服务端本次文件的指纹。浏览器会存储这些内容,并在下次请求时发送参数。

2、Nginx

Nginx可以配置缓存时间,首先在location处,匹配需要缓存的内容,例如js、css、jpg、png等,然后再location内部,设置expires = 30d,表示缓存30天。

这样,同样文件名的内容,都会被缓存30天,如果30天内该文件有改动,可以采用带参数的方式避开缓存,例如将xxx.js文件名改为xxx.js?a=1,这样就会跳过本次的缓存,Nginx会缓存该文件。

五、文件压缩

1、minify

Js、css文件,由于都是静态文件,因此可以使用文件压缩,来减少浏览器需要下载的文件大小,以加快响应速度。

文件压缩可以用minify工具,该工具可以将多个js文件压成一个,且会自动把里面的换行、空格等压缩,通常压缩完后文件大小会是原来的40%左右。

2、gzip

除了minify,还可以用gzip,将文件进一步压缩。Gzip压缩文件,采用的原理是Huffman树,将js、css中一些很长且经常使用的变量,用很短的字符来代替,且能保证代替后的内容,具备可还原性。

因此,gzip还会维护一套字典,记录压缩的内容和解压的内容的映射关系。

Gzip压缩后,文件会缩小到30%左右。

压缩有,在Nginx中需要加个配置,在server段,加入gzip on表示开启gzip压缩,另外还有其他几个参数,包括gzip_buffers(即一次发送给客户端的包大小)、gzip_comp_level(压缩级别,越大压的越厉害,但是会消耗CPU)、gzip_min_length(小于这个字节的文件不压缩)、gzip_types(设置需要压缩的文件类型)。

压缩后,刷新浏览器,在开发者模式下,可以看到加载的文件,Content-Encoding:gzip,表示开启压缩成功。

通常,JS、CSS、图片都会需要压缩和缓存,而动态文件通常不能进行这些操作。

六、CDN

1、目的

CDN加速,目的在于加快加载静态文件的速度。

2、原理

CDN,称为内容分发网络,其原理是在网络的各个实际的地点,放置服务器节点,当用户发送请求,经过智能DNS解析,可以根据IP判断地理位置、接入网的运营商类型等,选择路由最短、负载最轻的服务器,进行请求,并且存储该IP。

该服务器中,如果没有需要请求的内容,则会去真正存放代码文件的服务器请求,并且将请求结果进行缓存。后面再有请求发送过来,则直接返回结果。

七、图片服务器

通常,图片服务器需要单独部署,不和代码、数据库、nosql等服务器放在一起。因为图片服务器负载大,请求慢,占用大量的I/O,因此单独建立服务器可以保证不影响到其他服务。

当有多台图片服务器时,可以使用fastDFS工具,来搭建文件系统,管理这些图片服务器。

原文地址:https://www.cnblogs.com/zmdComeOn/p/11704930.html

时间: 2024-10-07 07:31:16

优化页面访问速度(四) ——前端优化的相关文章

优化页面访问速度(一)——综述

优化页面访问速度(一) ——综述 一.概述 优化页面访问速度,首先需要了解用户在浏览器输入url后,最终是如何看到所需的页面.在了解整个流程后,可以逐个步骤进行优化. 二.从URL到页面 大致流程如下: 1.DNS服务器解析域名,并转成IP,返回给浏览器,浏览器直接通过IP来访问. 2.根据IP,通过各种网关.路由器.交换机,最终访问到代码所在的Nginx服务器上. 3.Nginx解析URL,对于js.css.图片等静态资源,直接找到对应文件并返回:如果是php文件,由于Nginx本身不会处理p

优化页面访问速度(二) ——数据库优化

优化页面访问速度(二) ——数据库优化 一.概述 数据库优化,主要包括数据表设计.索引.sql语句.表拆分.数据库服务器架构等方向的优化. 二.数据库设计 在建表的时候,就需要考虑到将来的使用场景,尽量在建表初期就设计好. 1.存储引擎 Mysql常被提到的存储引擎就是InnoDB和MySIAM,其实现在主要都在用InnoDB了.两者的区别: InnoDB支持事务,索引和数据存在一个文件,主键查询速度快(主键就是索引B+树的叶子节点,而数据就绑定在叶子节点),行级锁,支持外键,恢复起来较快. M

优化页面访问速度(三) ——服务端优化

优化页面访问速度(三) ——服务端优化 一.概述 服务端的优化,主要可以通过消息队列.减少数据库请求(缓存).并发处理.页面静态化等方式处理. 二.消息队列 1.解决问题 消息队列(Message Queue,MQ)有许多不同的实现方式,可以用rabbitmq.activemq.rocketmq,也可以用任务分发系统gearman. 消息队列主要是解决消息的异步发送,即对于某个系统不需要关心的内容,只需要发布一个处理完毕的消息,带上一些参数,有需要的系统自行订阅.例如一些任务执行完成的回调函数,

提高 SharePoint 页面访问速度之SQL优化

前面两篇文章我们和大家一起讨论到了SharePoint IIS的应用池回收,W3WP进程数和重置回收等方面的优化,今天来和大家讲讲后端SQL服务器的优化. 对于SQL的优化,今天主要介绍的就是两点,CPU的优化和内存的优化. 很多同学在装好SQL之后,其实并没有对内存优化进行设置,导致SQL的内存分配很不合理,针对于SharePoint,建议设置SQL的使用内存最少为 8192 MB,最多为 20480 MB 这个临界值. 如上设置,注意,这里的配置值和运行值一定要配置两次,并且要保证其一直,否

【转】加快网站访问速度——Yslow极限优化

Yslow是一套雅虎的网页评分系统,详细的列出了各项影响网页载入速度的参数,这里不做多说. 我之前就一直参考Yslow做博客优化,经过长时间的学习也算是有所收获,小博的YslowV2分数达到了94分(偶耶!),如果换用博客类小网站评分标准更是可以达到满分. 下面我就总结几点大家力所能及优化方法,分享给各位. 下面贴一下小博全新刷新的载入图,下面文章中用得到: 我认为网页优化主要分为两类,个人称之为软优化与硬优化.软优化主要包括:服务器缓存类与浏览器本地缓存类,这些优化主要是参数设置上的改动.而硬

HTML5移动开发之路(51)——jquerymobile中改善页面访问速度

本文为 兄弟连IT教育 机构官方 HTML5培训 教程,主要介绍:HTML5移动开发之路(51)--jquerymobile中改善页面访问速度 在使用jQuery Mobile进行开发的时候可以选择单页模版和多页模版,在使用单页模版的时候从一个页面跳转到另一个页面的时候需要从服务器请求,用户会感到略有停顿.使用多页模版,可以改善页面跳转之间的流畅性,但是多个页面要一次性下载,所以下载时间变长,用户体验也会受到影响. 在基于预取技术的开发中,当第一个页面的DOM对象加载完成后,jQuery Mob

提高 SharePoint 页面访问速度之 IIS 应用池回收

相信大家都有这样的体会,我们企业内部的 SharePoint 在使用了一段时间之后,都会有访问速度降低,页面访问速度缓慢的问题,除了服务器硬件瓶颈所导致的原因, 还有一些其他的原因,这些原因从各个层面对SharePoint 造成很多的干扰,今天我们就来说其中的一个,IIS应用池回收. SharePoint 在长期的运行过程当中,服务器内存中会存储很多缓存信息,以帮助下次用户访问时能够快速响应,但是这样的日积月累,也使得内存池承受了很大的压力, 从而形成臃肿的缓存区,那么为了减小服务的负担,IIS

提高 SharePoint 页面访问速度之&ldquo;暖场&rdquo;脚本

上一篇文章我们讲到了关于如果采用IIS应用池回收技术来提高SharePoint的页面访问速度,今天来给大家讲一个SharePoint圈儿内"著名"的暖场脚本(Warm-up-script). 所谓暖场脚本,顾名思义,就是在一切正式的表演之前,先来给大家暖暖场,不至于使得大家感觉到尴尬和不自在.同理,其实就是帮助SharePoint实现访问提速,不至于访问卡顿和缓慢. 不知道大家有没有这样的感受,每天早上来上班,会发现第一次打开SharePoint的速度很慢,之后会好很多,这是什么原因呢

小强的HTML5移动开发之路(51)——jquerymobile中改善页面访问速度

在使用jQuery Mobile进行开发的时候可以选择单页模版和多页模版,在使用单页模版的时候从一个页面跳转到另一个页面的时候需要从服务器请求,用户会感到略有停顿.使用多页模版,可以改善页面跳转之间的流畅性,但是多个页面要一次性下载,所以下载时间变长,用户体验也会受到影响. 在基于预取技术的开发中,当第一个页面的DOM对象加载完成后,jQuery Mobile会对标记data-prefetch的链接地址进行预取操作.预取的详细过程如下: 注意:使用预取功能时,不建议给所有链接都添加data-pr