如何通过GZIP来优化你的网站

news/2024/5/20 15:12:13/文章来源:https://blog.csdn.net/baidu_35407267/article/details/77141871

如果你想节省带宽提高网站速度,压缩是一种简单有效的方法。当我打算提高JavaScript的传输速率来开启GZIP压缩的时候,我犹豫了因为有旧版本浏览器的存在(IE6)。

然而在二十一世纪,我们大部分的流量来自于现代浏览器,坦白的讲,我们大部分的用户都是很懂技术的。我们不想让任何一个人在访问我们网站的时候卡顿,哪怕是他在用IE4.0和Wdinows95.谷歌和雅虎都开启了gzip压缩。一个现代的浏览器要想不仅要享受到现代网络信息还要享受到现代互联网的速度,就必须开启gzip压缩。以下是如何设置。

等等,为什么我们要开启gzip压缩

在此之前,我有必要解释一下什么编码。当你在互联网上想请求一个文件时,比如http://www.yahoo.com/index.html,你的浏览器会和服务器有一个会话,大概如下如所示。

  1. 浏览器:嘿,给我来一个 index.html文件
  2. 服务器:好的,让我去找找它是不是在~
  3. 服务器:找到它了,我会返回一个成功的状态码(200 ok),我正在发送文件……
  4. 浏览器:100kb? 我滴天……等啊……等啊,好的,下载下来了

当然,实际的请求头和协议会更加正规一点。

但是,它生效了,我拿到了index.html文件。

那现在问题在哪呢?

好吧,这系统是正常的,但是太低效了,坦白讲100kb是一大段的文字,HTML是冗余的,每一个,

,
都有一个几乎相同的闭合标签。虽然通篇文字都有重复,但是只要你砍掉任何的内容,html(以及它的一奶同胞xml)都不会正常显示。

当文件太大的时候有什么好办法呢,就是gzip压缩它。

如果我们传输一个替代原始大文件的zip的压缩文件给浏览器,就会节省带宽和下载时间。当浏览器可以下载zip文件,解压,并且渲染给用户。下载很快,页面加载也很快,用户心情就会very good。这个浏览器–服务器的会话大概是酱紫的:

1. 浏览器:嘿,给我来一个index.html,如果要有,给我来一个压缩版的可以吗
2. 服务器:容我找找……好,满足你,如果找到了给你压缩以下,gzip格式的哦
3. 服务器:yep,找到了,正在压缩,马上传给你。
4. 浏览器:太棒了,只有10kb,我来解压,并且渲染给用户。

情况很简单:文件越小,下载更快,用户感受更好。

不相信我?雅虎主页的html部分通过压缩从101kb直接压到了15kb:

残(淡)酷(定)的现实

变化的部分在于浏览器和服务器,它成功的发送过去一个压缩文件。对于gzip压缩的要点有两点:

  • 浏览器发送一个请求头,告诉服务器接受压缩版本的文件(gzip和deflate是两种压缩算法)Accept-Encoding:gzip,deflate
  • 如果文件压缩了,服务器返回一个头信息:Content-Encoding:gzip

如果服务器没有返回Content-Encoding的头信息,意味着这文件是没压缩的(浏览器可以直接解析的)。请求头Accept-Encoding只是浏览器的一个请求,而不是命令。如果服务器不返回压缩文件,浏览器就不得不处理那庞大的源文件。

服务器设置

“好消息”是我们没办法控制浏览器。他发“Accept-encoding: gzip, deflat”或者不发,请求头就在那里,不增不减。

我们需要做的只是给服务器配置,让它返回压缩版本。如果浏览器控制,我们可以为每一个人节省带宽。

对于IIS服务器,启动压缩在“设置”里。

如果你像我一样用nodejs来搭建服务器,那你中奖了,nodejs开启gzip非常的简单,只需增加两行代码搞定。

const express = require('express');
const app = express();//express框架,前边肯定都是必要的,也就是只需安装compression组件,然后添加一下两句代码就好
const compression = require('compression');
app.use(compression());

对于Apache服务器,我们可以启动压缩输出也很简单直接。在你的.htaccess文件里增加如下代码:

# compress text, html, javascript, css, xml:
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript# Or, compress certain file types by extension:
<files *.html>
SetOutputFilter DEFLATE
</files>

Apache服务器有两个压缩选择:

  • mod_deflate 更简单设置更加标准。
  • mod_gzip 看起来更加强大,可以预预缩文件。

Deflate更快,所以我用的它;当然如果想更爽,用mod_gzip。无论你选那种,Apache会检查浏览器是否发送“Accept-encoding”请求头来判断是返回压缩文件还是源文件。然而,一些旧版本浏览器会带来麻烦,需要一些特别的指令来纠正它。

如果你不能改你的.htaccess 文件,你可以用PHP来返回压缩的内容,给你的HTML文件一个.php 文件,把下边文件加在文件的最上边。
IN PHP :

<?php if (substr_count($_SERVER[‘HTTP_ACCEPT_ENCODING’], ‘gzip’)) ob_start(“ob_gzhandler”); else ob_start(); ?>

我们会检查“Accept-encoding”头,返回gzip压缩版本的文件(不然就返回源文件)。这简直像是在建设你自己的web服务器。如果你确实在搭建服务器,请用Apache来压缩你的文件。你肯定不想下载你的文件 just like bearing。

这有点给apache打广告的意思啊

验证压缩的效果

一旦你配置好了你的服务器,检查他是不是生效了。
- 在线查看:用online gzip test来检查你的网页是不是确实压缩了。
- 浏览器查看:在chrome谷歌浏览器,F12打开 开发者工具–> network页签(火狐和IE浏览器也是相似的)。刷新你的页面,点击这network航信息来查看。这“Content-encoding: gzip” 的头信息意味着内容压缩了传过来的。

image

点击“use large rows”表情来查看更多信息。包含了压缩以后的大小和源文件的大小。

image

奇迹般的,主页从187kb压缩到了59kb。

试试几个小栗子

我做了个几个页和一个下载demo:
- index.html —— 默认压缩
- index.htm —— 通过在Apache上的.htaccess文件 增加 *.htm规则来压缩
- index.php —— 通过php的头信息来压缩

随意下载这些文件,放到你的服务器,调整你的服务器设置。

警告

gzip压缩的出现如此的令人振奋,但是还有以下三个注意点:
- 低版本浏览器:一些浏览器接受压缩文件还是有问题(他们说他们可以但是他们并不行),如果你的站点必须在window95的网景1.0浏览器上,你可能不想要压缩文件。Apache mod_deflate设置了一些忽略规则来专门为旧浏览器。
- 已经压缩过的文件:大多数的图片,音乐和视频都已经压缩过了,不要浪费时间来压缩他们了。事实上,你可以只压缩那三巨头(HTML,CSS AND JAVARSCRIPT)。
- CPU负载:在传输过程中压缩文件耗费CPU但是节省带宽(用空间换时间)。通常压缩速率的选择需要权衡利弊。也存在一些预压缩静态文件的方法,但这要求更多的资源。考虑了cpu的耗费,压缩文件也是利大于弊。通过压缩实现更好的用户体验,更短的留白时间,值!


开启gzip压缩是优化网站最快的方法之一。大胆的用吧,让你的用户体验更棒。

本文为翻译文章,欲了解原文请点击原文链接,github地址

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

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

相关文章

网站TDK标题的正确写法

什么是TDK&#xff1f; T&#xff1a;title D&#xff1a;meta-description K&#xff1a;meta-keywords TDK的重要性 TDK占比40%的排名得分&#xff0c;没有关键词&#xff0c;网站几乎不会有排名。 书写格式 (1) 标题title&#xff1a; 字数32个字左右格式&#xff1a;…

10个面向程序员的在线编程网站

在过去的几年里&#xff0c;在互联网上出现了许多为开发人员提供的在线编程网站&#xff08;Coding playgrounds&#xff09;。这不是一件坏事情&#xff0c;毕竟&#xff0c;如果一个编程网站的话&#xff0c;开发者们迟早会腻的。在这些网站上&#xff0c;你在网页上编写代码…

在ASP.NET网站中实现带列表的视频播放

在ASP.NET网站中实现带列表的视频播放 方法&#xff1a;用c#将视频文件上传到磁盘上时同时生产对应的xml文件&#xff0c;播放页面使用js读取对应的xml文件生成播放列表。xml文件&#xff1a;文件名&#xff1a;huojian.xml视频上传代码&#xff1a; using System; using Syst…

在ASP.NET网站中实现带列表的视频播放(2)

视频播放模块代码&#xff1a; < table cellspacing " 0 " cellpadding " 4 " width " 100% " border " 0 " > < tbody > < tr > < td style " vertical-align: top; width: 70% " > < obj…

如何消除网站安全的七大风险

以工作中某项目的安全改善过程为例&#xff0c;分享了常用网站安全性的典型问题和解决对策&#xff0c;希望对网站开发者有借鉴意义。 有过网站开发经验的朋友都知道网站安全是构建网站时必须要考虑的一个因素&#xff0c;网站安全的重点在于服务器的安全配置管理以及程序脚…

中脉周希俭解析反传销网站搭建的几种方式

中脉周希俭&#xff1a;搭建反传销网站我们可以用织梦CMS&#xff0c;WordPress&#xff0c;帝国CMS还有很多带后台的管理系统。 1&#xff0c;接下来用织梦系统搭建一个网站 搭建织梦网站下载一个系统 以首页为例&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD X…

SEO黑帽常见的几种作弊手法

黑帽SEO是指不正规的做法&#xff0c;以帮助网站在搜索引擎中获取更高的排名。通常&#xff0c;一个网站甚至都不知道自己网站正在受到黑帽SEO优化的困扰&#xff0c;并为此受到惩罚。 尽管黑帽子可以暂时帮助网站在搜索引擎中排名更高&#xff0c;但是搜索引擎最终会将其降级…

目前建站系统用的比较多的几个系统(几款值得推荐的建站系统)

现在有很多的人在建设网站的时候采用的都是cms系统&#xff0c;我国比较经常使用的是PageAdmin、DECMS、MetInfo、帝国系统等等不同的CMS系统使用的方向也是有所差异的&#xff0c;下面我们就来看下哪些建站系统会更加的好用一些。 一&#xff0c;MetInfo MetInfo这个系统是一…

淘淘商城12_门户网站的搭建

1.创建taotao-portal工程&#xff0c;跟taotao-manager-web类似 2.pom.xml <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 h…

大型网站技术架构(一)--大型网站架构演化(转)

看完了有一本书&#xff0c;就应该有所收获&#xff0c;有所总结&#xff0c;最近把《大型网站技术架构》一书给看完了&#xff0c;给人的印象实在深刻&#xff0c;再加上之前也搞过书本上讲的反向代理和负载均衡以及session独立存储和缓存&#xff0c;因此书本看起来还是挺通俗…

大型网站技术架构(四)--网站的高性能架构

网站性能是客观的指标&#xff0c;可以具体体现到响应时间、吞吐量、并发数、性能计数器等技术指标。 1、性能测试指标 1.1 响应时间 指应用执行一个操作需要的时间&#xff0c;指从发出请求到最后收到响应数据所需要的时间。如下列出了系统常用的操作响应时间表. 操作 响应…

大型网站技术架构(五)--网站高可用架构

网站的可用性&#xff08;Avaliability&#xff09;描述网站可有效访问的特性。 1、网站可用性的度量与考核 网站不可用时间&#xff08;故障时间&#xff09;故障修复时间点-故障发现&#xff08;报告&#xff09;时间点 网站年度不可用时间&#xff08;1-网站不可用时间/年度…

大型网站技术架构(六)--网站的伸缩性架构

网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能&#xff0c;通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的伸缩性设计可以分成两类&#xff0c;一类是根据功能进行…

大型网站技术架构(七)--网站的可扩展性架构

扩展性是指对现有系统影响最小的情况下&#xff0c;系统功能可持续扩展或提升的能力。 设计网站可扩展架构的核心思想是模块化&#xff0c;并在此基础上&#xff0c;降低模块间的耦合性&#xff0c;提供模块的复用性。模块通过分布式部署&#xff0c;独立的模块部署在独立的服务…

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

从互联网诞生起&#xff0c;安全威胁就一直伴随着网站的发展&#xff0c;各种Web攻击和信息泄露也从未停止。常见的攻击手段有XSS攻击、SQL注入、CSRF、Session劫持等。 1、XSS攻击 XSS攻击即跨站点脚本攻击&#xff08;Cross Site Script&#xff09;&#xff0c;指黑客通过篡…

无废话SharePoint入门教程三[创建网站集和网站]

一、前言 前两篇文章讲解了什么是SharePoint&#xff0c;并且介绍了在SharePoint中一些常用的概念。但概念终究是概念&#xff0c;我们还是要脚踏实地的去动手实践。下面的文章对于了解SharePoint的人来说过于简单&#xff0c;但由于本系列是入门教程&#xff0c;所以从最简单的…

通过DNS服务器实现web网站的域名解析

通过DNS服务器实现web网站的域名解析 域名系统 (Domain Name System 简称DNS&#xff09;作用是域名解析 DNS服务器的作用&#xff1a;把web浏览器输入的域名解析为网络可识别的IP地址&#xff0c;再返回IP地址让web浏览器通过DNS服务器解析得来的IP地址连接到web服务器 实验…

Nginx网站服务(基础理论、运行、访问控制、Nginx虚拟主机)

文章目录 前言&#xff1a;一、Nginx服务基础1.1 Nginx概述1.2 手工编译安装Nginx1.3 运行控制 二、Nginx访问控制2.1 配置文件简介2.2 访问状态统计 三、访问控制3.1 安装、配置DNS服务3.2 测试DNS解析服务3.3 设置访问控制3.3.1 修改主配置文件3.3.2 测试访问控制 3.4 基于客…

Python—使用分布式爬取网站信息

分布式爬虫&#xff08;入门&#xff09; 实验目的&#xff1a;通过本台主机实现分布式爬虫&#xff0c;用分布式爬虫来爬取溴事百科每个段子的标题&#xff0c;后面会为大家介绍redis数据库的使用&#xff0c;分布式爬虫通常和redis数据库一起使用 文章目录 分布式爬虫&#x…

几个免费查重的网站

有时候写了一点东西&#xff0c;学校或老师可能会提出查重检测的要求&#xff0c;为方便自己或大家这里记录几个用过的 唯知查重 、早检测 、必过论文 、PaperFree 、本科学校用的Gocheck 有的话之后会添加的~~~~ 编辑大大这不是adv呀&#xff01; 百度的论文助手 有三…