Apache网页优化之压缩与缓存

更新日期: 2019-11-11阅读: 2.1k标签: 缓存

Apache网页优化概述

在企业中,部署Apache后只采用默认的配置参数,会引发网站很多问题,换言之默认配置是针对以前较低的服务器配置的,以前的配置已经不适用当今互联网时代为了适应企业需求,就需要考虑如何提升Apache的性能与稳定性,这就是Apache优化的内容


gzip介绍

配置Apache的网页压缩功能,是使用gzip压缩算法来对网页内容进行压缩后再传输到客户端浏览器
作用
降低了网络传输的字节数,加快网页加载的速度
节省流量,改善用户的浏览体验
gzip与搜索引擎的抓取工具有着更好的关系


Apache实现网页压缩的功能模块包括

mod_gzip 模块
moddeflate模块
Apache 1.x
没有内建网页压缩技术,但可使用第三方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加载速度更快


配置网页压缩功能

首先检查是否安装了mod_deflate模块
执行apachectl -t -D DUMP_MODULES命令
如果输出中没有deflate_module (static),说明编译时没有安装mod_deflate模块
若没有安装则要重新编译安装

./configure --enable-deflate...
make && make install

在配置httpd.conf中配置开启gzip功能

AddOutputFilterByType DEFLATE texthtml text/plain text/csstext/xml text/javascript
DeflateCompressionL evel
SetOutputFilter DEFL ATE

第一行代表对什么样的内容启用gzip压缩
第二行代表压缩级别
第三行代表启用deflate模块对本站点的输出进行gzip压缩


安装Apache服务

远程挂载软件包文件夹到本地并查看

[root@localhost ~]# mkdir /abc                                       //创建挂载点
[root@localhost ~]# mount.cifs //192.168.100.7/LAMP-C7 /abc/         //挂载
Password for root@//192.168.100.10/LAMP-C7:  
[root@localhost ~]# cd /abc/
[root@localhost abc]# ls
apr-1.6.2.tar.gz       cronolog-1.6.2-14.el7.x86_64.rpm  LAMP-php5.6.txt
apr-util-1.6.0.tar.gz  Discuz_X2.5_SC_UTF8.zip           mysql-5.6.26.tar.gz
awstats-7.6.tar.gz     httpd-2.4.29.tar.bz2              php-5.6.11.tar.bz2

解压源码包到/opt目录下,并移动httpd组件包

[root@localhost abc]# tar zxvf apr-1.6.2.tar.gz -C /opt/
[root@localhost abc]# tar zxvf apr-util-1.6.0.tar.gz -C /opt/
[root@localhost abc]# tar jxvf httpd-2.4.29.tar.bz2 -C /opt/
[root@localhost abc]# cd /opt/
[root@localhost opt]# ls
apr-1.6.2  apr-util-1.6.0  httpd-2.4.29  httpd.txt  rh
[root@lamp opt]# mv apr-1.6.2/ httpd-2.4.29/srclib/apr        [root@lamp opt]#  mv apr-util-1.6.0/ httpd-2.4.29/srclib/apr-util

安装实验环境必须的软件包

yum -y install gcc gcc-c++ make pcre-devel zlib-devel expat-devel pcre perl   

配置安装目录及模块

[root@lamp opt]#cd /opt/httpd-2.4.29/
./configure --prefix=/usr/local/httpd --enable-so --enable-deflate --enable-expires --enable-rewrite --enable-charset-lite --enable-cgi

编译安装Apache

make && make install


修改Apache配置文件

[root@localhost httpd-2.4.29]# cd /usr/local/httpd/
[root@localhost httpd]# ls
bin    cgi-bin  error   icons    lib   man     modules
build  conf     htdocs  include  logs  manual
[root@localhost httpd]# cd conf
[root@localhost conf]# ls
extra  httpd.conf  magic  mime.types  original
[root@localhost conf]# vim httpd.conf 
[root@localhost conf]# ln -s /usr/local/httpd/conf/httpd.conf /etc/httpd.conf
[root@localhost conf]# vim /etc/httpd.conf 
/deflate搜索关键词查找关键词所在行    
LoadModule deflate_module modules/mod_deflate.so        //去除注释开启服务
/headers搜索关键词查找关键词所在行
LoadModule headers_module modules/mod_headers.so        //去除注释开启服务
/filter搜索关键词查找关键词所在行
LoadModule filter_module modules/mod_filter.so          //去除注释开启服务
使用/Listen查找关键词所在位置
注释ipv6,开启ipv4并将监听端口改为本机地址
Listen 192.168.131.129:80
#Listen 80
使用/ServerName查找关键词,并做如下修改
ServerName www.kgc.com:80

在文件末行插入以下内容
<IfModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/css text/xml text/javascript text/ipg text/png
  DeflateCompressionLevel 9
  SetOutputFilter DEFLATE
</IfModule>
[root@localhost conf]# /usr/local/httpd/bin/apachectl -t
Syntax OK
//验证语法是否正确

[root@localhost bin]# ./apachectl start       //启动服务
[root@localhost bin]# netstat -ntap | grep 80
tcp        0      0 192.168.35.131:80       0.0.0.0:*               LISTEN      35887/httpd
[root@localhost bin]# systemctl stop firewalld.service    //关闭防火墙
[root@localhost bin]# setenforce 0        //关闭增强型安全功能
[root@localhost bin]# ./apachectl -t -D DUMP_mooules | grep "expire"
Syntax OK

使用测试机win10进行测试,在浏览器输入网址192.168.131.129即可访问到主页

共享文件夹中的图片复制到网页文件目录下,并将图片添加到网页中

[root@localhost bin]# cd /abc/
[root@localhost LAMP]# ls
apr-1.6.2.tar.gz                  fangdao.jpg
apr-util-1.6.0.tar.gz             httpd-2.4.29.tar.bz2
awstats-7.6.tar.gz                tupian.png
cronolog-1.6.2-14.el7.x86_64.rpm  mysql-5.6.26.tar.gz
Discuz_X2.5_SC_UTF8.zip           php-5.6.11.tar.bz2
[root@localhost LAMP]# cp lf.jpg /usr/local/httpd/htdocs/        //把图片复制到网页文件夹
[root@localhost LAMP]# cd /usr/local/httpd/
[root@localhost httpd]# cd htdocs/
[root@localhost htdocs]# ls
index.html  tupian.png
[root@localhost htdocs]# vim index.html 
<html><body><h1>It works!</h1>
<img src="tupian.png"/>
</body></html>

现在我们再次使用测试机进行访问就可以看到添加的图片,我们通过抓包软件可以看到有图片的抓取信息中有在端口处进行gzip压缩处理信息

配置网页的缓存时间

通过mod expire模块配置 Apache,使网页能在客户端浏览器缓存一段时间,以避免重复请求
启用mod
 expire模块后, 会自动生成页面头部信息中的Expires标签和Cache-Control标签,从而降低客户端的访问频率和次数,达到减少不必要的流量和增加访问速度的目的

修改httpd.conf配置文件
启用mod expires模块,并设置http协议下任意格式的文档均60秒后过期

<lfModule mod expires.c\>
ExpiresActive On
ExpiresDefault "access plus 60 seconds"
</lfModule\>

重启httpd服务


Apache缓存实操

在配置完Apache网页压缩在前提下再进行如下配置

配置Apache配置文件

[root@localhost htdocs]# vim /etc/httpd.conf
在配置文件末行插入以下内容
<IfModule mod_expires.c>
  ExpiresActive On
  ExpiresDefault "access plus 50 seconds"
</IfModule>

检查语法正确性并重启服务

[root@localhost htdocs]# pwd
/usr/local/httpd/htdocs
[root@localhost htdocs]# cd /usr/local/httpd/
[root@localhost httpd]# cd bin/
[root@localhost bin]# ./apachectl -t        //检查语法
Syntax OK
[root@localhost bin]# ./apachectl stop
[root@localhost bin]# ./apachectl start

我们在用测试机win10里的浏览器进行抓包测试,此时我们可以看到我们设置的网页缓存的时间在头部信息中出现


链接: https://www.fly63.com/article/detial/6418

浏览器缓存_HTTP强缓存和协商缓存

浏览器缓存主要分为强强缓存(也称本地缓存)和协商缓存(也称弱缓存),强缓存是利用http头中的Expires和Cache-Control两个字段来控制的,用来表示资源的缓存时间。协商缓存就是由服务器来确定缓存资源是否可用.

angularjs 缓存详解

一个缓存就是一个组件,它可以透明地存储数据,以便未来可以更快地服务于请求。缓存能够服务的请求越多,整体系统性能就提升得越多。

浏览器缓存问题原理以及解决方案

浏览器缓存就是把一个已经请求过的Web资源(如html页面,图片,js,数据等)拷贝一份副本储存在浏览器中,为什么使用缓存:减少网络带宽消耗,降低服务器压力,减少网络延迟,加快页面打开速度

Web缓存相关知识整理

一个H5页面在APP端,如果勾选已读状态,则下次打开该链接,会跳过此页面。用到了HTML5 的本地存储 API 中的 localStorage作为解决方案,回顾了下Web缓存的知识

使用缓存加速之后的网站访问过程变化

在描述CDN的实现原理之前,让我们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差别,用户访问未使用CDN缓存网站的过程为:用户向浏览器提供要访问的域名;

html页面清除缓存

页面打开时,由于缓存的存在,刚刚更新的数据有时无法在页面得到刷新,当这个页面作为模式窗口被打开时问题更为明显, 如何将缓存清掉?

HTTP之缓存 Cache-Control

通过在Response Header设置Cache-Control head 信息可以控制浏览器的缓存行为。我们先来看一下Cache-Control可以设置哪些值:缓存头Cache-Control只能在服务端设置,在客户端是由浏览器设置的,自己不能修改它的值。

工程化_前端静态资源缓存策略

增量更新是目前大部分团队采用的缓存更新方案,能让用户在无感知的情况获取最新内容。具体实现方式通常是(一般我们通过构建工具来实现,比如webpack):

前端静态资源自动化处理版本号防缓存

浏览器会默认缓存网站的静态资源文件,如:js文件、css文件、图片等。缓存带来网站性能提升的同时也带来了一些困扰,最常见的问题就是不能及时更新静态资源,造成新版本发布时用户无法及时看到新版本的变化,严重影响了用户体验。

vue后台管理系统解决keep-alive页面路由参数变化时缓存问题

一个后台管理系统,一个列表页A路由配置需要缓存,另一个页面B里面有多个跳转到A路由的链接。问题描述:首先访问/A?id=1页面,然后到B页面再点击访问A?id=2的页面,发现由于页面A设置了缓存,数据还是id=1的数据,并没有更新。

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!