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

news/2024/5/19 20:26:00/文章来源:https://blog.csdn.net/weixin_39717076/article/details/82561431

如果你想节省带宽提高网站速度,压缩是一种简单有效的方法。当我打算提高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());
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

对于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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

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(); ?>
  • 1

我们会检查“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压缩是优化网站最快的方法之一。大胆的用吧,让你的用户体验更棒。

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

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

相关文章

[转载] 网站被挂木马与777权限的奥妙--------------如何识别文件的权限

某天VIP大讲堂微信群里的一位同学说网站被人挂马了&#xff0c;查了半天也查不到原因。艺龙SEO负责人刘明问了一句“是不是技术把linux系统里网站的核心目录设置777文件权限了”&#xff0c;同学查后发现果然如此。那么&#xff0c;777是什么?爱偷懒的程序员都该会心一笑&…

程序员接私活平台_推荐几个程序员接私活的网站,你有码,我有钱

很多有技术的码农们浑身的葵花宝典&#xff0c;辟邪剑法&#xff0c;十八般武艺&#xff0c;但不能一身的本事空空浪费&#xff0c;现在小编就给大家推荐几个接私活的秘籍&#xff0c;助你收入飙升&#xff0c;纵横码农圈&#xff0c;众猿皆披靡。但你如果只是眼中有码&#xf…

UC浏览器调试移动端网站

准备工作&#xff1a; UC浏览器开发版网址 UC浏览器开发者版下载地址 下载adb_tool 步骤&#xff1a; 1.将adb_tool解压&#xff0c;把里面的文件复制到 C:\Windows\SysWOW64 文件夹下面。 2.运行cmd 输入“c”: 按Enter键&#xff0c; 输入“cd”: 按Enter键&#xff0c; 输入…

启用apache压缩模块节约网站带宽

背景&#xff1a;网站随着用户访问量的增加和内容量的增加&#xff0c;网站的带宽会不断的增加&#xff0c;随之就是网站成本的增加。并且当内容量增大的时候&#xff0c;客户端如果带宽小&#xff0c;就会影响用户的体验。因此从这两方面考虑&#xff0c;网站的某些内容必须经…

手把手视频:万能开源Hawk抓取动态网站

Hawk是沙漠之鹰历时五年开发的开源免费网页抓取工具&#xff08;爬虫&#xff09;&#xff0c;无需编程&#xff0c;全部可视化。 自从上次发布Hawk 2.0过了小半年&#xff0c;可是还是有不少朋友通过邮件或者微信的方式询问如何使用。看文档还是不如视频教学方便&#xff0c;沙…

《音乐达人秀:Adobe Audition实战200例》——1.5 网络与网站已成为人们获取音乐的最佳途径...

本节书摘来自异步社区《音乐达人秀&#xff1a;Adobe Audition实战200例》一书中的第1章&#xff0c;第1.5节&#xff0c;作者 健逗&#xff0c;更多章节内容可以访问云栖社区“异步社区”公众号查看。 1.5 网络与网站已成为人们获取音乐的最佳途径 多年前&#xff0c;没有网络…

网站服务器容器是什么,http服务器和web容器区别

http服务器和web容器区别 内容精选换一换WAF转发和Nginx转发的主要区别为Nginx是直接转发访问请求到源站服务器&#xff0c;而WAF会先检测并过滤恶意流量&#xff0c;再将过滤后的访问请求转发到源站服务器&#xff0c;详细说明如下&#xff1a;WAF转发网站接入WAF后&#xff0…

网站构建学习笔记(0)——基本概念了解及资源学习(copy自w3school)

一、学习方面 1、WWW - 万维网 什么是 WWW&#xff1f; WWW 指万维网&#xff08;World Wide Web&#xff09; 万维网常被称为Web Web 是由遍布全球的计算机所组成的网络 所有 Web 中的计算机都可以彼此通信 所有这些计算机都使用名为 HTTP 的通信标准WWW 如何工作&#xff1f;…

Wordpress安装Redis为网站加速

前面我们讲了宝塔Linux面板安装Redis&#xff0c;现在我们来举一些例子来看看redis的实际运用&#xff0c;比如Wordpress安装Redis为网站加速&#xff0c;下面就跟着ytkah一起来操作一下。 第一&#xff0c;下载predis.php放到网站根目录&#xff0c;与index.php同目录&#xf…

利用利用政府网站获得SEO高质量外链方法【吐血收集】

最近&#xff0c;有在网上发现一个【高权重外链】的发布方法。利用政府网站的虚拟外链转为物理外链&#xff0c;从而获得政府网站的外链权重。政府网站的权重本来就高&#xff0c;通过这个方法可以获得一定权重的政府外链。一、首先要找到目标政府网站首先你要找到高权重的政府…

使用Hexo+Github搭建自己的个人网站

文章目录1、准备工作2、打开git bash命令行输入:3、新建本地博客文件夹Blog4、GitHub新建仓库1、准备工作 1、创建一个GitHub账户 2、下载安装 Node.js (包含 npm) 3、安装Git 2、打开git bash命令行输入: 注:在任意位置打开git bash输入即可。 node -v //查看node.js的版…

使用Typecho搭建个人网站

博主以前是Hexo和GitHub来搭建的网站nonniexie.cn的,这里介绍用Typecho来搭建。准备工作&#xff0c;需要一台自己的云服务器。并且远程连接到云服务器上&#xff0c;给你推荐几个比较好用的连接工具FinalShell、Xshell 5、SecureCRTP、putty一共四款工具。个人比较喜欢Xshell …

phpStudy v8.1创建本地网站域名

**简介&#xff1a;**以tp5.1为例&#xff0c;利用phpstudy v8.1创建一个本地网站域名。 **第一步&#xff1a;**打开phpStudy并启动web服务&#xff1b; **第二步&#xff1a;**点击“创建网站”&#xff1b; **第三步&#xff1a;*输入域名、http80、同步hosts、定位根目录&…

phpStudy v8.1创建本地网站域名

简介&#xff1a; 以tp5.1为例&#xff0c;利用phpstudy v8.1创建一个本地网站域名。 第一步&#xff1a; 打开phpStudy并启动web服务&#xff1b; **第二步&#xff1a;**点击“创建网站”&#xff1b; **第三步&#xff1a;*输入域名、http80、同步hosts、定位根目录&#x…

ThinkPHP6.0在phpstudy下配置网站域名

1、安装T6框架&#xff0c;参照文章&#xff1a;Composer与ThinkPHP6.0的下载与安装 2、打开phpstudy&#xff0c;启动Apache。 3、在phpstudy导航栏目中选择“网站”&#xff0c;点击“创建网站” 在弹出的网站对话框内&#xff0c;自行填写域名、将根目录定位到t6的入口文件…

python 自动登录网站_解放双手,用Python自动登录25个主流网站

原标题&#xff1a;解放双手&#xff0c;用Python自动登录25个主流网站 用 Python 写爬虫脚本是大家经常遇到的需求。在这个过程中&#xff0c;避开不了登录这一关。 使用 Python 一般会用 request 库&#xff0c;补充 header 中的 post 要素&#xff0c;有些还会有 隐藏的 hid…

在服务器上同时执行 多个kettle_一台服务器上如何创建多个网站?

一台服务器上如何放多个网站呢&#xff1f;其实很简单&#xff0c;我们以阿里云服务器为例。教大家用宝塔面板一键部署&#xff0c;轻松添加多个站点。&#xff08;在步骤12&#xff09;什么是宝塔面板&#xff1a;宝塔Linux面板是提升运维效率的服务器管理软件&#xff0c;支持…

什么是CDN,网站被攻击时该怎么防

日前&#xff0c;空前高涨的网络攻击威胁着大量的站长&#xff0c;很多站长为了应对网络攻击可谓是耗尽心力&#xff0c;取得的效果确是不尽人意的。 首先我们应该了解什么是网络攻击&#xff0c;网络攻击常见的有DDOS攻击&#xff0c;WEB应用攻击等。 DDOS攻击全称也叫分布式…

php1139,已解决!php-fpm配置弄错了,面板,网站都502 Bad Gateway

[求助帖]已解决&#xff01;php-fpm配置弄错了&#xff0c;面板&#xff0c;网站都502 Bad Gateway铁牌会员158.00 价值分总 16,650 次阅读 13 张回复 hyb9512 发表于 2014-03-05 14:24:25本帖最后由 hyb9512 于 2014-3-7 00:40 编辑之前都一直好好的&#xff0c;今天网站打…

java jpanel 数据刷新6,Java提取网站后台数据进行处理并排名

Java提取网站后台数据进行处理并排名一、网页分析打开网站后&#xff0c;可以看到这个网站的编程语言排名情况。我们选择下图中的图表&#xff0c;这个图表中有2001-2019年的编程语言每个月的使用率&#xff0c;我需要它的数据。二、数据提取在网页点右键&#xff0c;点击查看源…