Apacheは、Webページを圧縮してページを最適化し(キャッシング、圧縮)、アクセラレーションモードを有効にします

前書き:

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を使用したページ圧縮は、サーバー自体の応答速度が十分に最適化されている(高速)場合にのみ実行されます。つまり、このソリューションは、帯域幅がシステムのボトルネックになった場合に考慮されます。

おすすめ

転載: blog.csdn.net/weixin_47151643/article/details/107974910