Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

网页性能优化(二) #2

Open
Roe-Tian opened this issue Oct 12, 2019 · 0 comments
Open

网页性能优化(二) #2

Roe-Tian opened this issue Oct 12, 2019 · 0 comments
Labels
前端性能优化 前端网页性能优化

Comments

@Roe-Tian
Copy link
Owner

前言

在上一篇文章中,我们以及聊过了减少http请求的四个方法:

  1. 减少css和JavaScript
  2. 雪碧图
  3. image base64
  4. image map

正文

今天,我们来了解一下服务器相关方面,我们可以做的优化

首先,我们必须知道一个神器——CDN。它在现在的网站中发挥着无尽的作用。CDN(Content Delivery Network),即基于内容的分布式分发网络,它帮助现在大多数网站进行静态资源的部署。正如,军规中提到的网络请求中,有80%-90%的响应时间是在资源下载中度过的,而CDN的机制可以帮助我们更快的获取到这些静态的资源。

首先,我们需要清楚为什么需要CDN这个东西,仅仅只是帮助网站提高加载速度么!其实,不仅仅如此,试想一下一些大型的网站(全国、甚至是全世界),访问的基数非常之大,静态资源的访问频繁,会使得主站服务器吃不消,即使给单个端口增至最大的带宽,也无法满足需求。因此,CDN在这里扮演者重要的角色。

CDN的网络结构大概是中心节点加上边缘节点组成的。这就相当于每个人访问网站时,如果网站部署了CDN,那么就会向最近的CDN服务器请求静态资源,而不是想传统的网站一样,只会去访问主站服务器。使用CDN时,还可以对内容进行缓存,以加快网站的访问速度。

例子:

当我们看到网页的资源是如下表示的,就表示它使用了CDN来进行静态资源的分发

<link crossorigin="anonymous" href="https://assets-cdn.github.com/assets/frameworks-77c3b874f32e71b14cded5a120f42f5c7288fa52e0a37f2d5919fbd8bcfca63c.css" integrity="sha256-d8O4dPMucbFM3tWhIPQvXHKI+lLgo38tWRn72Lz8pjw=" media="all" rel="stylesheet">

大致了解了CDN,我们再来哔哔缓存。一直以来,我都一度认为缓存是一个好东西,毕竟,很多时候只要做了这个处理,都可以得到良好的收益。

例如,你总是会频繁的访问一个网站,你可能会不断重复的去请求和下载同一个资源N次。这是相当不可取的。一旦,服务器做了缓存,那么,网站就会告诉你,这个东西你还能继续使用。在响应头中设置expires或者cache-control的属性,来设置相应资源文件的响应时间。这样,在你第一次访问完一个网站之后,当你再一次访问时,往往会收到304的响应状态码,因为资源的缓存还未到期。如果你有个资源万年不变,你就可以将expires的有效时间设置为10000年(当然是不可以的,expires是有最大值的哈)。

Expires: Thu, 15 Apr 2020 20:00:00 GMT

一旦你设置了这个值,浏览器将认为资源不会更新。但是,突然你又想更新一下资源你又要怎么办呢。那就在资源后面加上hash值或者版本号,example-2c3fde.js类似。

总结

在服务器上做优化,会使得整体网站的访问速度提升很多

@Roe-Tian Roe-Tian added the 前端性能优化 前端网页性能优化 label Oct 12, 2019
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
前端性能优化 前端网页性能优化
Projects
None yet
Development

No branches or pull requests

1 participant