/** 
   *本文主要介绍如何通过apache对页面进行压缩和页面缓存从而节省网站的带宽以及提升用户的访问速度。 
   *作者:野四abin 
   * 时间:2009-11-21

*/

网站的访问速度是由多个因素所共同决定的,这些因素例如应用程序的响应速度、网络带宽、服务器性能、与客户端之间的网络传输速度等等。其中最重要的一个因素是应用程序本身的响应速度,因此当你为网站性能所苦恼时,你第一个需要着手进行处理的便是尽可能的提升应用程序的执行速度,你可以使用缓存或者是优化代码的执行效率来提升应用程序的速度。

但是,本文并不是介绍如何来提升应用程序的执行效率,在确保您的应用程序的性能已经达到足够好,同时服务器的性能也完全满足的情况下,不妨来试试网页压缩和页面缓存来进一步提升网页的浏览速度,而且非常重要的是,它完全不需要任何的成本,只不过是会让您的服务器CPU占用率稍微提升一两个百分点而已或者更少。

网页压缩是一项由 WEB 服务器和浏览器之间共同遵守的协议,也就是说 WEB 服务器和浏览器都必须支持该技术,所幸的是现在流行的浏览器都是支持的,包括 IE、FireFox、Opera 等;服务器有 Apache 和 IIS 等。双方的协商过程如下:

首先浏览器请求某个 URL 地址,并在请求的头 (head) 中设置属性 accept-encoding 值为 gzip, deflate,表明浏览器支持 gzip 和 deflate 这两种压缩方式(事实上 deflate 也是使用 gzip 压缩协议,下面我们会介绍二者之间的区别); 
     WEB 服务器接收到请求后判断浏览器是否支持压缩,如果支持就传送压缩后的响应内容,否则传送不经过压缩的内容; 浏览器获取响应内容后,判断内容是否被压缩,如果是则解压缩,然后显示响应页面的内容。 
     在实际的应用中我们发现压缩的比率往往在 3 到 10 倍,也就是本来 50k 大小的页面,采用压缩后实际传输的内容大小只有 5 至 15k 大小,这可以大大节省服务器的网络带宽,同时如果应用程序的响应足够快时,网站的速度瓶颈就转到了网络的传输速度上,因此内容压缩后就可以大大的提升页面的浏览速度。

页面缓存是将一部分经常不会改变和变动的文件或页面缓存,下次浏览器再次访问这些页面时,而不需要再次去调用这些和下载这次页面的文件或页面,而提高了用户的访问速度。

现在言归正传来谈谈如何使用Apache来对页面进行压缩和页面缓存来提升性能.为了实现这些功能需要三个模块mod_deflate、mod_expires和mod_headers,关于这三个模块的介绍请参考apache文档,这里不再阐述。

要实现这些东西的配置先在httpd.conf文件下找到下面三个地方

[code="文本"]#LoadModule deflate_module modules/mod_deflate.so 
#LoadModule expires_module modules/mod_expires.so 
#LoadModule headers_module modules/mod_headers.so 
同时去掉前面的“#”,这些模块功能已经开启了,下面我们在配置GZIP和Expires了。配置GZIP和Expires也很容易,我们只需要在httpd.conf 配置文件中启用并进行相关的配置即可,配置如下:

[code="文本"] 
ExpiresActive on 
ExpiresDefault "now plus 1 day" 
ExpiresByType image/x-icon "access plus 10 year" 
ExpiresByType image/gif "access plus 1 month" 
ExpiresByType image/jpeg "access plus 1 month" 
ExpiresByType text/css "now plus 1 month" 
ExpiresByType text/javascript "now plus 1 month" 
ExpiresByType application/x-javascript "now plus 1 month" 
ExpiresByType text/html "now plus 5 minutes" 
ExpiresByType text/plain "now plus 1 month" 
ExpiresByType image/js "access plus 1 month" 
ExpiresByType application/x-shockwave-flash "access plus 1 week"

Header set Cache-Control "max-age=604800" 
    Header unset ETag

FileETag none

DeflateCompressionLevel 9 
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/x-httpd-jsp 
AddOutputFilter DEFLATE js css

SetOutputFilter DEFLATE 
BrowserMatch ^Mozilla/4 gzip-only-text/html 
BrowserMatch ^Mozilla/4\.0[678] no-gzip 
BrowserMatch \bMSIE !no-gzip !gzip-only-text/html 
SetEnvIfNoCase Request_URI \.(?:gif|jpe?g|png)$ no-gzip dont-vary 
Header append Vary User-Agent env=!dont-vary

通过上述配置你就成功通过apache对页面进行压缩和页面缓存来提升性能。

其他相关参考页面:

http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/core.html

http://blog.csdn.net/joliny/archive/2008/02/27/2124344.aspx

http://1229363.blog.163.com/blog/static/19743427200772372018878/

转载于:https://www.cnblogs.com/ellisonDon/archive/2012/11/08/2760645.html

通过apache对页面进行压缩和页面缓存来提升性能相关推荐

  1. php缓存输出压缩,PHP_控制PHP的输出:缓存并压缩动态页面,mod_gzip是一个Apache模块,其功 - phpStudy...

    控制PHP的输出:缓存并压缩动态页面 mod_gzip是一个Apache模块,其功能是使用Gzip压缩静态的html页面,遵循IETF标准的浏览器可以接受gzip编码(IE, Netscape等).m ...

  2. php缓存输出压缩,PHP控制输出:缓存并压缩动态页面的简单示例

    这篇文章主要为大家详细介绍了PHP控制输出:缓存并压缩动态页面的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣的小伙伴,下面一起跟随512笔记的小玲来看看吧! mod_gzip是一个Apac ...

  3. Asp.Net MVC 页面代码压缩筛选器-自定义删除无效内容

    Asp.Net MVC 页面代码压缩筛选器 首先定义以下筛选器,用于代码压缩. /*页面压缩 筛选器*/public class WhiteSpaceFilter : Stream{private S ...

  4. Nginx性能优化功能- Gzip压缩(大幅度提高页面加载速度)

    Nginx开启Gzip压缩功能, 可以使网站的css.js .xml.html 文件在传输时进行压缩,提高访问速度, 进而优化Nginx性能!  Web网站上的图片,视频等其它多媒体文件以及大文件,因 ...

  5. Apache PHP 的gzip压缩输出的实现方法

    一.gzip介绍 gzip是GNU zip的缩写,它是一个GNU自由软件的文件压缩程序,也经常用来表示gzip这种文件格式.软件的作者是Jean-loup Gailly和Mark Adler.1992 ...

  6. Android开发-WebView的缓存处理和性能优化 实现H5页面秒开【四】

    前言 老早之前就想总结下Webview相关的知识点了,因为互联网大潮中,很多APP都会使用到Webview,像那些不计其数的电商APP,无一例外的使用Webview:或者一些非电商APP中的像广告页面 ...

  7. 转:浏览器加载页面的过程与页面性能优化

    本文是转帖,原文:http://www.baiduux.com/blog/2011/02/15/browser-loading/ 发布日期:2011年2月15日 作者:nwind 类别:HTML/CS ...

  8. 通过页面埋点做监控却不影响性能?解密ARMS前端监控数据上报技术内幕

    摘要: 本文将为您介绍,在采集多类日志数据的情况下,阿里云业务实时监控服务(ARMS)之前端监控如何优化日志上报 前端监控 (又叫UEM,User Experience Management, 用户体 ...

  9. vue.js能美化界面吗_vue将单页面改造成多页面应用的方法

    问题描述: 手头有一个项目是使用 vue-cli 搭建的单页面应用.项目分为了管理平台和用户查看页面,用户查看页面是很简单的页面,但是在加载过程中,却加载了整个应用的打包代码,量重且影响了响应和体验. ...

  10. android 页面icon拉伸_页面转场: 忽略它可能会使你犯错

    转自:和出此严(ID:Hechu618) 作者: 和出此严 不知各位产品经理.UE/UI设计师在设计产品时,除了考虑交互说明.功能状态.页面逻辑等之外,是否会关注 页面跳转间的"转场效果&q ...

最新文章

  1. 华尔街风暴的深层原因
  2. 【设计模式】原型模式 ( 概念简介 | 使用场景 | 优缺点 | 基本用法 )
  3. switch java 语法_Java编程—switch语句语法详解
  4. C 如何对指针进行指定字节的偏置操作
  5. Mybatis源码分析之(四)mapper访问数据库的底层原理(代理方法中具体访问数据库的细节)
  6. 【海报设计灵感】潮翻天的波普艺术海报设计
  7. python cryptography key加密_python3利用cryptography 进行加密和解密
  8. Linux基础命令---ftp
  9. JAVA RSA加密解密代码范例(byte[]版)
  10. jqgrid列表显示时间控件
  11. 极客学院微信小程序视频教程
  12. JAVA中如何计算文具店总费用,文具店的连锁属于。
  13. 中考考试的指令广播_2016中招考试广播指导语
  14. 解决webpack打包css时CssSyntaxError的问题
  15. 哈工大深圳计算机自动化专业,欢迎报考哈工大深圳研究生院自动化系
  16. 2018.06.27Firing(最大权闭合子图)
  17. Android Studio获取wifi列表等信息
  18. 化危为机,“戴”你走近“小企业”数字化生存
  19. go语言web开发1 相关知识
  20. 奥塔哥理工学院 计算机,新西兰留学:19所国立理工学院清单及地理位置

热门文章

  1. 药品质量不合格统计机器人
  2. linux进程号转换成16进制,linux-shell 脚本转换 十六进制 十进制 八进制 二进制
  3. C/C++[codeup 2026]日期类
  4. jsoup html to text,Jsoup和htmlunit结合使用。
  5. Pandas学习笔记- DataFrame
  6. 2015-11-30 20:59:08之自力更生
  7. 【区间dp】【Gym 100712L】01串切割问题 + 线段树优化
  8. 2017-09-26 10:45:51.905 ERROR 9704 --- [nio-8080-exec-5] com.linktrust.aspect.AopLogger :
  9. Hugging Face Course-Diving in 抱抱脸 Datasets library
  10. 契税申报期限_纳税申报的5个小常识,会计不知道,真不适合干会计