Introducción:
La compresión de la página web para mejorar aún más la velocidad de navegación de las páginas web, no requiere ningún costo en absoluto, pero aumentará ligeramente el uso de la CPU del servidor en uno o dos puntos porcentuales o menos.
principio:
La compresión de páginas web es un protocolo que cumple el servidor WEB y el navegador, lo que significa que tanto el servidor WEB como el navegador deben admitir esta tecnología. Los navegadores más populares son compatibles, incluidos IE, FireFox, Opera, etc .; servidor Hay Apache e IIS. El proceso de negociación entre las dos partes es el siguiente:
1. Primero, el navegador solicita una dirección URL y establece el atributo accept-encoding value en el encabezado de la solicitud en gzip, deflate, lo que indica que el navegador admite los métodos de compresión gzip y deflate (de hecho, deflate también usa gzip Protocolo de compresión);
2. Después de recibir la solicitud, el servidor WEB juzga si el navegador admite la compresión y, si lo hace, transmite el contenido de respuesta comprimido; de lo contrario, transmite el contenido sin comprimir;
3. Una vez que el navegador obtiene el contenido de la respuesta, juzga si el contenido está comprimido, si es así, lo descomprime y luego muestra el contenido de la página de respuesta.
En aplicaciones reales, encontramos que la relación de compresión es a menudo de 3 a 10 veces, que es la página de tamaño original de 50 K. Después de la compresión, el tamaño real del contenido transmitido es solo de 5 a 15 KB, lo que puede ahorrar mucho ancho de banda de red del servidor.
Descripción general del zip de compresión de páginas web
- Configure la función de compresión de páginas web de Apache, que utiliza un algoritmo de compresión gzip para comprimir el contenido de la página web y luego transferirlo al navegador del cliente.
- efecto
- Reduzca la cantidad de bytes transmitidos a través de la red y acelere la carga de la página web
- Ahorre tráfico y mejore la experiencia de navegación de los usuarios
- gzip tiene una mejor relación con el trabajo de rastreo de los motores de búsqueda
Módulo de compresión Apache
- Los módulos funcionales de Apache para la compresión de páginas web incluyen
- módulo mod_gzip
- módulo mod_deflate
- Apache 1.x
- No hay tecnología de compresión de páginas web incorporada, pero el módulo mod_gzip de terceros se puede utilizar para realizar la compresión
- Apache 2.x
- Durante el desarrollo, el módulo mod_deflate está integrado en lugar de mod_gzip
- módulo mod_gzip y módulo mod_deflate
- Ambos usan el algoritmo de compresión gzip, el principio de funcionamiento es similar
- La velocidad de compresión mod_deflate es ligeramente más rápida, mientras que la relación de compresión mod_gzip es ligeramente superior.
- mod_gzip tiene un mayor uso de CPU en el servidor
- Para servidores de alto tráfico, el uso de mod_deflate puede cargar más rápido que mod_gzip
Uno: experimento de compresión de páginas web
- Instale apache primero
[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
- Instale el compilador y otras herramientas
[root@localhost opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre-devel \
> expat-devel \
> perl
> zlib-devel \
- configurar
[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
- hacer compilar hacer instalar
[root@localhost httpd-2.4.29]# make '//编译'
...省略内容
[root@localhost httpd-2.4.29]# make install '//安装'
...省略内容
- Editar archivo de configuración
#将主配置文件通过软链接,连接到/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
- Verificar el servicio de reinicio de sintaxis
[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"/>
-
Verificar configuración
-
Abrir un host
-
Herramienta de verificación de instalación de host filddler
Dos: almacenamiento en caché de páginas web
Descripción general de la configuración del tiempo de caché de la página
- Configure Apache a través del módulo mod_expire, de modo que las páginas web se puedan almacenar en caché en el navegador del cliente durante un período de tiempo para evitar solicitudes repetidas.
- Una vez que se habilita el módulo mod_expire, la etiqueta Expires y la etiqueta Cache-Control en la información del encabezado de la página se generarán automáticamente, lo que reducirá la frecuencia y la frecuencia del acceso del cliente, logrando el propósito de reducir el tráfico innecesario y aumentar la velocidad de acceso.
2.1: experimento de caché web de Apache
- Igual que el entorno de compresión 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
- Instalar herramientas de compilación
[root@localhost opt]# yum -y install \
> gcc \
> gcc-c++ \
> make \
> pcre-devel \
> expat-devel \
> perl
> zlib-devel \
- configurar
[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
- hacer compilar hacer instalar
[root@localhost httpd-2.4.29]# make '//编译'
...省略内容
[root@localhost httpd-2.4.29]# make install '//安装'
...省略内容
- Editar archivo de configuración
[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
- Modificar la configuración del tiempo de caché
[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
para resumir:
La compresión de página mediante apache solo se realiza cuando la velocidad de respuesta del propio servidor está suficientemente optimizada (rápida), es decir, se considera esta solución cuando el ancho de banda se convierte en un cuello de botella del sistema.