关注云服务器
相关知识分享

Nginx和Apache怎么网站开启gzip压缩

我们先来看看gzip到底是个什么东西:

gzip(GNU- ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用户浏览页面的时候速度会快得多。gzip的压缩页面需要浏览器和服务器双方都支持,实际上就是服务器端压缩,传到浏览器后浏览器解压并解析。浏览器那里不需要我们担心,因为目前的大多数浏览器都支持解析gzip压缩过的资源文件。在实际的应用中我们发现压缩的比率往往在3到10倍,也就是本来50k大小的页面,采用压缩后实际传输的内容大小只有5至15k大小,这可以大大节省服务器的网络带宽,同时如果应用程序的响应足够快时,网站的速度瓶颈就转到了网络的传输速度上,因此内容压缩后就可以大大的提升页面的浏览速度。
实现gzip压缩的方式有多种,比如:nginx、tomcat、java等,选用其中一种即可。

综上所述,网站开启gzip是非常有必要的。那么我们来看看nginx和apache分别怎么开启gzip压缩吧

Nginx怎么开启gzip压缩

  #打开gzip压缩
  gzip on;
  #不压缩临界值,大于1K的才压缩,一般不用改
  gzip_min_length 1k;
  #设置系统获取几个单位的缓存用于存储gzip的压缩结果数据流,这里设置以16k为单位的4倍申请内存
  gzip_buffers 4 16k;
  #默认为http 1.1,现在99.99%的浏览器基本上都支持gzip解压了,所有无需设置此项
  #gzip_http_version 1.0;
  #gzip压缩比,1 最小处理速度最快,9 最大但处理最慢(传输快但比较消耗cpu)
  gzip_comp_level 2;
  #要压缩的文件类型,注意"text/html"类型无论是否指定总是会被压缩的
  gzip_types text/plain application/x-javascript text/css application/xml 
text/javascript application/javascript application/x-httpd-php image/jpeg 
image/gif image/png;
  #on的话会在Header里增加"Vary: Accept-Encoding",给代理服务器用的,有的浏览器支持压缩,
有的不支持,所以避免浪费不支持的也压缩,所以根据客户端的HTTP头来判断,是否需要压缩
  #我这里的浏览器肯定支持gzip压缩,所以就不开启此功能了
  gzip_vary off;
  #IE6对Gzip不怎么友好,不给它Gzip压缩了
  gzip_disable "MSIE [1-6]\.";

Apache怎么开启gzip压缩

# BEGIN GZIP  
#apache开启gzip压缩,前提要装gzip模块哦  
  
AddOutputFilterByType DEFLATE text/text text/html 
text/plain text/xml text/css application/x-javascript 
application/javascript 
  
# END GZIP

现在重启一下apache或nginx 即可,那么要如何检查是否正确开启gzip呢,我们可使用下面php代码:

//采用 gzip压缩网页  
//file_get_contents 直接获得的网页是乱码。  
header('Content-Type:text/html;charset=utf-8' );  
$url = 'https://cloud-ping.com';  
$file = fopen($url, "rb");    
//只读2字节  如果为(16进制)1f 8b (10进制)31 139则开启了gzip ;  
$bin = fread($file, 2);   
fclose($file);    
$strInfo = @unpack("C2chars", $bin);    
$typeCode = intval($strInfo['chars1'].$strInfo['chars2']);    
$isGzip = 0;    
switch ($typeCode)    
{  
    case 31139:        
      //网站开启了gzip  
        $isGzip = 1;  
        break;  
    default:    
        $isGzip = 0;  
}    
$url = $isGzip ? "compress.zlib://".$url:$url; // 三元表达式  
$mierHtml = file_get_contents($url); //获得云测速数据  
$mierHtml = iconv("gbk","utf-8",$mierHtml);  
echo $mierHtml;
//例2代码如下: 
<?php  
/*  
php 判断url页面是否使用gzip压缩  
*/ 
$ch = curl_init("https://cloud-ping.com/");//url不能有转向  
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept-Encoding: gzip, deflate'));  
curl_setopt($ch, CURLOPT_HEADER, 1);  
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);  
$buffer = curl_exec($ch);  
$curl_info = curl_getinfo($ch);  
curl_close($ch);  
$header_size = $curl_info["header_size"]; 
//头部信息长度  
$headers = substr($buffer, 0, $header_size); 
//获取头部信息  
$body = substr($buffer, $header_size); 
//获取网页内容  
   
function getEncoding(&$headers){  
    $arr=explode("rn",trim($headers));  
    array_shift($arr);  
    foreach($arr as $header){  
        list($k,$v)=explode(':',$header);  
        if ('content-encoding'==strtolower($k)){  
            return trim($v);  
        }  
    }  
    return false;  
}     
   
$encoding=getEncoding($headers);  
   
if ($encoding) {  
    echo "Using: ".$encoding;  
}else{  
    echo "None";  
}  
   
?>

快去试试吧,压缩后资源文件变得小了很多,加载速度也快了不少。可见,gzip压缩是页面性能优化的一种有效方式。

赞(0) 打赏
未经允许不得转载:云测速 » Nginx和Apache怎么网站开启gzip压缩

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

觉得文章有用就打赏一下文章作者吧~

微信扫一扫打赏