前書き:
Webページのブラウジング速度をさらに向上させるためのWebページ圧縮は、コストをまったく必要としませんが、サーバーのCPU使用率を1〜2パーセントポイント以下だけわずかに増加させます。
原理:
Webページ圧縮は、WEBサーバーとブラウザーによって準拠されるプロトコルです。つまり、WEBサーバーとブラウザーの両方がこのテクノロジーをサポートする必要があります。IE、FireFox、Operaなどの一般的なブラウザーがサポートされています。サーバーApacheとIISがあります。両当事者間の交渉プロセスは次のとおりです。
1.最初に、ブラウザはURLアドレスを要求し、要求のヘッダーにある属性accept-encoding値をgzip、deflateに設定します。これは、ブラウザがgzipとdeflateの両方の圧縮方法をサポートしていることを示します(実際、deflateはgzipも使用します)圧縮プロトコル);
2.要求を受信した後、WEBサーバーは、ブラウザーが圧縮をサポートしているかどうかを判断し、サポートしている場合は圧縮された応答コンテンツを送信し、サポートしていない場合は非圧縮コンテンツを送信します。
3.ブラウザは応答コンテンツを取得した後、コンテンツが圧縮されているかどうかを判断し、圧縮されている場合は解凍して、応答ページのコンテンツを表示します。
実際のアプリケーションでは、圧縮率が元の50kサイズのページである3〜10倍になることがよくあります。圧縮後、実際に送信されるコンテンツサイズはわずか5〜15kであり、サーバーのネットワーク帯域幅を大幅に節約できます。
Webページ圧縮zipの概要
- ApacheのWebページ圧縮機能を構成します。これは、gzip圧縮アルゴリズムを使用してWebページのコンテンツを圧縮し、それをクライアントブラウザーに転送します。
- 効果
- ネットワークを介して送信されるバイト数を減らし、Webページの読み込みを高速化します
- トラフィックを節約し、ユーザーのブラウジング体験を向上させる
- gzipは、検索エンジンのクロール作業との関係が良好です。
Apache圧縮モジュール
- Webページ圧縮用のApacheの機能モジュールには次のものがあります。
- mod_gzipモジュール
- mod_deflateモジュール
- Apache 1.x
- 組み込みのWebページ圧縮テクノロジーはありませんが、サードパーティのmod_gzipモジュールを使用して圧縮を実行できます。
- Apache 2.x
- 開発中、モジュールmod_deflateはmod_gzipの代わりに組み込まれます
- mod_gzipモジュールとmod_deflateモジュール
- どちらもgzip圧縮アルゴリズムを使用しており、動作原理は似ています
- mod_deflateの圧縮速度はわずかに速く、mod_gzipの圧縮率はわずかに高くなっています。
- mod_gzipのサーバーでのCPU使用率が高い
- トラフィックの多いサーバーの場合、mod_deflateを使用すると、mod_gzipよりも高速にロードされる可能性があります。
1つ:Webページ圧縮実験
- 最初にapacheをインストールします
[root@localhost ~]# cd /opt
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 rh
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost opt]# tar jxvf httpd-2.4.29.tar.bz2
[root@localhost opt]# ls
apr-1.6.2 apr-util-1.6.0 httpd-2.4.29 rh
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
[root@localhost opt]# ls
apr-1.6.2.tar.gz httpd-2.4.29 rh
apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2
- コンパイラやその他のツールをインストールする
[root@localhost opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre-devel \
> expat-devel \
> perl
> zlib-devel \
- 構成、設定
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# ls
ABOUT_APACHE docs Makefile.win
acinclude.m4 emacs-style modules
Apache-apr2.dsw httpd.dep NOTICE
Apache.dsw httpd.dsp NWGNUmakefile
apache_probes.d httpd.mak os
ap.d httpd.spec README
build include README.cmake
BuildAll.dsp INSTALL README.platforms
BuildBin.dsp InstallBin.dsp ROADMAP
buildconf LAYOUT server
CHANGES libhttpd.dep srclib
CMakeLists.txt libhttpd.dsp support
config.layout libhttpd.mak test
configure LICENSE VERSIONING
configure.in Makefile.in
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi \
> --enable-deflate
- make compile make install
[root@localhost httpd-2.4.29]# make '//编译'
...省略内容
[root@localhost httpd-2.4.29]# make install '//安装'
...省略内容
- 構成ファイルの編集
#将主配置文件通过软链接,连接到/etc/httpd.conf下 方便管理
[root@localhost httpd-2.4.29]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.coonf
[root@localhost httpd-2.4.29]# vim httpd.conf
[root@localhost httpd-2.4.29]# cd /etc
[root@localhost etc]# vim httpd.conf
#搜索/headres 头部信息
LoadModule headers_module modules/mod_headers.so
#/搜索/deflate,若没有,需要检查之前配置重新编译 搜索就取消注释
LoadModule deflate_module modules/mod_deflate.so
#搜索filter(过滤器) 要是在就在末行添加以下信息
LoadModule filter_module modules/mod_filter.so
#添加以下内容
<IfModule>
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/jpg text/png
DeflateCompressionLevel 9
SetOutputFilter DEFLATE
</IfModule>
#修改一下监听地址
Listen 20.0.0.41:80
#Listen 80 #注释ipv6
#修改域名 开启功能
ServerName www.niu.com:80
- 構文再起動サービスを確認する
[root@localhost etc]# /usr/local/httpd/bin/httpd -t
Syntax OK
#开启服务
[root@localhost etc]# /usr/local/httpd/bin/httpd
#关闭安全防护
[root@localhost etc]# sentenforce 0
[root@localhost etc]# systemctl stop firewalld.service
#查看端口
[root@localhost etc]# netstat -ntap | grep httpd
tcp 0 0 20.0.0.41:80 0.0.0.0:* LISTEN 121125/httpd
[root@localhost etc]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin build cgi-bin conf error htdocs icons include lib logs man manual modules
[root@localhost httpd]# cd htdocs/
[root@localhost htdocs]# ls
index.htm
#复制一张图片进来
[root@localhost htdocs]# rz -E
rz waiting to receive.
[root@localhost htdocs]# ls
1389753641370.jpg index.html
[root@localhost htdocs]# vim index.html
3编辑主页信息
<html><body><h1>It works!</h1></body></html>
<img src="1389753641370.jpg"/>
-
構成を確認する
-
ホストを開く
-
ホストインストール検証ツールfilddler
2:Webページのキャッシュ
ページキャッシュ時間の設定の概要
- mod_expireモジュールを使用してApacheを構成します。これにより、Webページをクライアントブラウザーに一定期間キャッシュして、要求の繰り返しを回避できます。
- mod_expireモジュールを有効にすると、ページヘッダー情報のExpiresタグとCache-Controlタグが自動的に生成されるため、クライアントアクセスの頻度と頻度が減り、不要なトラフィックを減らしてアクセス速度を上げるという目的が達成されます。
2.1:ApacheWebキャッシュ実験
- Web圧縮環境と同じ
[root@localhost opt]# cd /opt
[root@localhost opt]# rz -E
rz waiting to receive.
[root@localhost opt]# ls
apr-1.6.2.tar.gz apr-util-1.6.0.tar.gz httpd-2.4.29.tar.bz2 rh
[root@localhost opt]# tar jxvf httpd-2.4.29.tar.bz2
[root@localhost opt]# tar zxvf apr-1.6.2.tar.gz
[root@localhost opt]# tar zxvf apr-util-1.6.0.tar.gz
[root@localhost opt]# mv apr-1.6.2 httpd-2.4.29/srclib/apr
[root@localhost opt]# mv apr-util-1.6.0 httpd-2.4.29/srclib/apr-util
- コンパイルツールをインストールする
[root@localhost opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre-devel \
> expat-devel \
> perl
> zlib-devel \
- 構成、設定
[root@localhost opt]# cd httpd-2.4.29/
[root@localhost httpd-2.4.29]# ./configure \
> --prefix=/usr/local/httpd \
> --enable-deflate \
> --enable-expires \
> --enable-so \
> --enable-rewrite \
> --enable-charset-lite \
> --enable-cgi
- make compile make install
[root@localhost httpd-2.4.29]# make '//编译'
...省略内容
[root@localhost httpd-2.4.29]# make install '//安装'
...省略内容
- 構成ファイルの編集
[root@localhost httpd-2.4.29]# vim httpd.conf
#进来/搜索expires 开启模块 去掉注释
LoadModule expires_module modules/mod_expires.so
#末行添加
<IfModule mod_expires.c>
ExpiresActive On #开启缓存功能
ExpiresDefault "access plus 50 seconds" #保持50s
</IfModule>
#开启监听地址
Listen 20.0.0.41:80
#Listen 80
#开启域名
ServerName www.xx.com:80
[root@localhost bin]# pwd
/usr/local/httpd/bin
[root@localhost bin]# ./apachectl -t
Syntax OK
#执行脚本
[root@localhost bin]# ./apachectl
[root@localhost bin]# netstat -ntap | grep httpd
tcp 0 0 20.0.0.41:80 0.0.0.0:* LISTEN 52612/httpd
#查看是否安装mod——deflate模块
[root@localhost bin]# ./apachectl -t -D DUMP_MODULES | grep "expires"
expires_module (shared)
[root@localhost bin]# systemctl stop firewalld.service
[root@localhost bin]# setenforce
- キャッシュ時間設定を変更する
[root@localhost bin]# vim /usr/local/httpd/conf/httpd.conf
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 70 seconds"
</IfModule>
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start
総括する:
apacheを使用したページ圧縮は、サーバー自体の応答速度が十分に最適化されている(高速)場合にのみ実行されます。つまり、このソリューションは、帯域幅がシステムのボトルネックになった場合に考慮されます。