用apache等对页面进行gzip压缩
最佳回答
服务器设置 gzip 压缩是 web 开发里很普遍的做法。假设你要请求一个 100k 的文件,网络传输速度为 50k/s,需要 2s 才能得到数据,但是如果在服务器设置了 gzip 压缩,将服务端的文件压缩到了 50k(实际上的压缩率往往小于 50%),这时候只需 1s 就能得到数据,然后在客户端解压即可。
可以对比下同一个文件在开启 gzip 前后的大小。
gzip 压缩前:
gzip 压缩后:
那么如何在服务端开启 gzip 服务呢?这里以 apache 为例简单介绍下。
打开 apache 的 "httpd.conf" 文件,比如我的是在 "C:wampinapacheApache2.2.21conf" 目录下。找到以下这一行,将它前面的注释(#)去掉:
很多参考文件都提到同时要对 LoadModule headers_module modules/mod_headers.so 去掉注释,说 "如果不开启这个,那网站就不能正常显示了" ,不过我在测试过程中没有去掉也没有问题。
接着再添上以下代码:
这样就能对所有文件进行 gzip 压缩了。压缩等级是个 1-9 之间的整数,取值范围在 1(最低) 到 9(最高)之间,不建议设置太高,虽然有很高的压缩率,但是占用更多的CPU资源。(本地测试了下 1 和 9 压缩率差不了多少...)
实际开发中我们并不需要对所有文件进行压缩,比如我们无需对图片文件进行 gzip 压缩,因为图片文件(一般为 jpg、png等格式)本身已经压缩过了,再进行 gzip 压缩可能会适得其反(详见 图片要启用gzip压缩吗?绝对不要!,背景图片千万不要gzip压缩,尤其是PNG),类似的还有 PDF 以及音乐文件。所以我们可以设置过滤指定文件或者对指定文件进行压缩。
比如我们要对图片等特殊文件不进行 gzip 压缩处理:
或者指定文件格式进行压缩:
修改好后,保存 httpd.conf 文件,记得重启 apache,再刷新浏览器看请求,应该已经生效了!
最新回答共有5条回答
-
游客
回复这种方式建议使用对象存储,对象特别适合这种纯静态网站访问,同时图片部分也可以直接使用CDN进行加速。
我们以阿里云为例,你需要付出的成本大约为:
静态网站成本 = 对象存储空间成本 + 访问流量成本(下行流量)
当然如果需要CDN也可以直接在对象存储中使用。
对象存储空间成本根据标准存储包的价格,40GB包一年的价格大约为9元钱。
访问流量成本我们按照一年100GB的下行流量包计算,每年的的成本为441元。按照问题中28KB计算,总共可以访问374万次左右。
按照这种计算方式,总成本大约在450元左右,比部署云主机除了省钱外,还省去你的运维成本。
云开发方式静态托管我之前在我的个人博客里写过我如何使用腾讯云开发托管我的个人博客,这种方式也推荐使用。如果是纯静态托管,每月免费的容量为1GB,流量为5GB,这么算下来,每个月的可以支持18万次的访问,如果够用的话,完全可以免费了。
-
游客
回复事实胜于雄辩
根据你的问题描述不难发现2个问题,
1,样式文件放在了腾讯云COS?
2,服务器却选择了阿里云的低配ecs?
原因:动静分离你的cdn加速不是用的阿里的那就说明没有阿里的块,对于外网服务器来说,一次ip你却进行了俩次转换,包括一些跨域其他问题,服务器最低配置是有 1C/0.5G的ECS,那么对于这个服务器来说本身cpu处理就不行,最多用于学习和测试。就好比一个外网映射工具而已。
带宽很小。
下面我们实践来操作一下运用测试工具测试一下我自己1核2g 5M带宽的服务器,我还买了阿里的cdn+域名映射,资源动静分离了。目前项目基本秒开页面。很快啊!
下面开了3000个线程请求了一个html页面,
看下面参数详解
1M等于128kb 带宽传输。线程响应根据接口返回执行秒数来计算 那么就是3000/7 约等于430 那么就是一秒有430个线程在访问。而不是一秒就能请求3000
-
专业建网站
回复3000人同时访问一个纯静态文件,静态文件大小28K,那瞬间请求流量最大理论值为:3000x28K≈82M 。但是此值仅仅是理论上的瞬间最大流量,因为你的站点不可能每时每秒都保持在3000人访问,而是一段时间内的访问人数。如果真是每秒都至少是3000人访问,那你的服务器上行带宽至少得在 82x8 = 656M(之所以乘以8,是因为我们说的速率和运营商说的速率不是一个概念,换算单位不同),这样看来费用是相当的高。
但实际情况下并不能这样计算,实际请求带宽要远远低于656M,原因主要有以下几点:
用户流量是分散的,并不是每秒都有3000人访问;
浏览器对于静态页是有缓存的,所以这3000人中有一部分用户发出请求后,其实是直接从本地缓存中加载的,而没有请求远程服务器。
要知道,服务器的上行带宽是很贵的,按上面计算方法,就算打个折,你的服务器固定带宽100M的话,那光带宽费用一个月就要近7000元。
所以一般中小型网站的服务器上行带宽100M都算很大了,鉴于你的访客量不固定,我给你的建议是:
前端走CDN缓存,如果静态文件长期不更新,可以把缓存时间设得很长,如一个月;
后端ECS选择低配即可,带宽不要选固定带宽(选择按使用流量来计费,带宽选择5M足够了)。
这种配置下,别说3000人同时访问了,更高的并发都能抗得住。因为CDN本身就充当了负载均衡的角度,而且CDN节点遍布全国,使得用户“就近读取”静态资源。
以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流 ~ 我是科技领域创作者,欢迎关注我了解更多科技知识!
-
游客
回复在负载均衡中有一个必须要做的事情就是给服务器开启Gzip压缩功能,对用户请求的页面进行压缩处理,以达到节省网络带宽,提高网站速度的作用。
Gzip是若干文件压缩程序的简称,通常指GNU计划的实现,此处的Gzip代表的就是GUN ZIP,这也是HTTP1.1协议定义的两种压缩方法中最常用的一种压缩方法,客户端浏览器大都支持这种压缩格式。
接下来,将介绍Apache、Nginx 如何开启Gzip压缩。
Apache开启Gzip要看查看是否已经开启mod_deflate模块,如果没有则需要先加载,在配置文件httpd.conf中将
前面的#号去掉。另外,如果对Apache的配置文件不太懂的客户在修改配置文件之前对配置文件进行备份。
开启模块后,在httpd.conf配置文件的最下面空白处添加一下内容:
其中DeflateCompressionLevel 的意思是压缩等级,共分为1-9,9级为最高,不建议使用太高的压缩比,这样会对CPU产生太大的负担。
打开配置文件 nginx.conf找到Gzip on 把前面的注释符号#去掉即可开启GZIP服务。然后配置GZIP即可。
下面是一个相对优化不错的配置。