`

使用PHP压缩网站JS/CSS文档的实例

阅读更多

转自:Saturn's Weblog

一些泛WEB 2.0网站为了追求用户体验,可能会大量使用CSS和JS文件。这就导致在服务器带宽一定的情况下,多用户并发访问速度变慢。如何加快网页响应速度?解决办法之一就是:依照Yahoo性能优化小组提出的N条性能优化建议对前端程序进行优化和重构,关于此文的讨论很多,在这里不再赘述。

这篇文章主要分享一下我个人在实际项目中,对于使用PHP对JS和CSS进行压缩的经验,在这里假设服务器仅支持GZIP压缩,不支持.htaccess(符合很多站长的租用的虚拟主机实际情况)。

首先说说对CSS和JS文件进行性能优化的几个小技巧:

  • 将多个CSS/JS文档合并成一个文件,以减少HTTP请求
  • 对合并后的文件进行文档压缩,比如分别使用js compressorCSS compress
  • 如果使用到一些主流的JavaScript框架,比如JQuery, Mootools或者YUI,强烈推荐直接使用Google AJAX Library以外部链接的形式导入基库。
  • 最后,就是本文所提到的,使用GZIP在服务器端对JS/CSS文档进行压缩。

这里提到的方法对系统来说是无侵入式的,也就是说不管你的程序是新编写的,还是已经上线了很久,均适用。

先看我对图标吾爱进行优化的实例截图(YSlow):

使用PHP/GZIP压缩JS/CSS文档

在这个例子中,我分别对服务器输出的HTML文档、JS文档和CSS文档使用了GZIP压缩,可以看到压缩效果非常明显,文件体积减小了70%以上。页面加载速度明显加快。

实际上,用PHP使用GZIP压缩非常简单,其核心是使用ob_gzhandler,不过需要注意的一点是,并不是所有浏览器都支持GZIP传送到客户端的数据,所以要进行一定的容错处理。

下面是使用PHP通过GZIP压缩CSS的实例。

在存放CSS的文件夹中新建一个style.php文件,在此文件中加入以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

if(extension_loaded('zlib')){//检查服务器是否开启了zlib拓展
ob_start('ob_gzhandler');
}
header ("content-type: text/css; charset: gb2312");//注意修改到你的编码
header ("cache-control: must-revalidate");
$offset = 60 * 60 * 24;//css文件的距离现在的过期时间,这里设置为一天
$expire = "expires: " . gmdate ("D, d M Y H:i:s", time() + $offset) . " GMT";
header ($expire);
ob_start("compress");
function compress($buffer) {//去除文件中的注释
$buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
return $buffer;
}
 
//包含你的全部css文档
include('global.css');
include('layout.css');
 
if(extension_loaded('zlib')){
ob_end_flush();//输出buffer中的内容,即压缩后的css文件
}
?>

如果你处理的是JavaScript文件,你需要将上面代码中的第5行的Content-type修改成以下:

  header ("content-type:application/x-javascript; charset: gb2312");

同样需要注意的是文件的编码,这里我用的是gb2312,如果你采用的是UTF-8或其他编码,修改成对应的即可。

修改完成之后,在原引入CSS和JS文件的地方,将.css后缀/.js后缀的文件更换成这个style.php文件即可,如:

<script type="text/javascript" src="http://www.icon52.net/scripts/autoSuggest.js.php?v=121">

Live Demo请使用Firefox,并安装YSlow插件查看图标吾爱这个网站。

2009-8-30 Update:

由于上面代码中使用到了HTTP的Expires(过期)属性用于在客户端缓存CSS/JS代码,所以,如果过期时间设置的太长(比如2020 年),当你在服务器端修改了JS/CSS代码时,客户端可能不会立即生效。解决办法是:在php文件后面添加一个随机参数,如上面例子中的v=121,当下次修改了文件时,记得相应修改此随机参数即可。

分享到:
评论

相关推荐

    PHP实例开发源码—php网址压缩-带后台管理.zip

    8. 后台管理系统:学习如何构建一个简单的后台界面,用于管理压缩的URL,可能涉及HTML、CSS、JavaScript以及PHP的MVC架构。 9. 错误处理与调试:了解如何在PHP中进行错误处理和调试代码。 10. 安全性考虑:如防止SQL...

    PHP实例开发源码—phprap接口文档管理系统.zip

    【标题】"PHP实例开发源码—phprap接口文档管理系统.zip" 提供的是一个基于PHP语言实现的接口文档管理系统,名为PHPRAP。这个系统主要用于帮助开发者管理和组织API接口的相关文档,提升开发效率和协作体验。 【描述...

    基于PHP的在线文档管理系统源码.zip

    1. **前端**:这部分可能使用HTML、CSS和JavaScript构建,负责用户界面的展示和交互。可能包含Bootstrap、jQuery或其他前端框架来提升用户体验。 2. **后端**:这部分主要是PHP代码,处理用户的请求,与数据库交互...

    w3school最新版11.12.6.chm

    实例/案例 HTML 实例 CSS 实例 XML 实例 JavaScript 实例 JavaScript 对象实例 HTML DOM 实例 XML DOM 实例 DHTML 实例 AJAX 实例 VBScript 实例 ASP 实例 ADO 实例 SVG 实例 WAP 实例 测验/考试 ...

    PHP实例开发源码—AKCMS政府网站系统 php版GBK.zip

    【标题】"PHP实例开发源码—AKCMS政府网站系统 php版GBK.zip"是一个基于PHP编程语言的开源网站管理系统,特别针对政府网站的建设需求进行了设计和开发。这个系统使用了GBK编码,适应中文环境,确保了中文字符的正确...

    PHP实例开发源码-无忧PHP企业网站管理系统标准版.zip

    【PHP实例开发源码-无忧PHP企业网站管理系统标准版.zip】是一个包含PHP源代码的压缩文件,主要用于构建和管理企业级网站。这个系统是基于PHP编程语言开发的,旨在提供一个高效、稳定且易于使用的解决方案,帮助企业...

    PHP实例开发源码——Sail! php 企业网站管理系统简体中文版.zip

    通常,一个压缩包会包含多个文件和文件夹,如HTML模板、PHP脚本、CSS样式表、JavaScript文件、数据库配置、图片资源、文档说明等。在实际的Sail! PHP企业网站管理系统中,我们可以期待找到如以下组件: 1. **入口...

    PHP实例开发源码—35DIR 网站收录查询工具php版.zip

    【压缩包子文件的文件名称列表】:由于只提供了一个数字"132687501091297347",这可能是一个错误或者遗漏,因为在正常情况下,压缩包内的文件名应该是一系列有意义的字符串,比如PHP源代码文件(如index.php、...

    PHP实例开发源码-魔众Markdown php管理系统.zip

    综合以上信息,我们可以推断这个压缩包中的内容可能包括PHP Markdown解析器的实现、用户接口的HTML/CSS/JavaScript代码、数据库配置和查询脚本,以及一个用于说明系统使用方法和安装步骤的文档。对于希望了解PHP实际...

    PHP实例开发源码—蓝色博客类网站模板 php版.zip

    【PHP实例开发源码—蓝色博客类网站模板 php版.zip】是一个包含PHP源代码的压缩文件,主要用于构建一个蓝色主题的博客网站。这个压缩包旨在为开发者提供一个基础的、可自定义的平台,用于实践PHP编程技能或者快速...

    PHP实例开发源码—SuperWord 博客程序 php版.zip

    4. **PHP与HTML/CSS/JavaScript的结合**:理解如何在PHP中嵌入动态内容,并与前端技术协同工作,构建交互式的用户界面。 5. **Session和Cookie**:掌握如何使用PHP处理用户会话,实现登录、注册等用户管理功能。 6. ...

    Metro UI CSS学习笔记Demo

    同时,建议配合"Metro UI CSS 学习笔记"一起使用,意味着有相关的文字教程或者文档可以辅助理解,使学习过程更加系统和高效。 【标签】"Metro UI CSS"明确了我们关注的主题,这是一个基于CSS的前端框架,它包含了一...

    PHP实例开发源码—ICMS建站系统 php版.zip

    6. `css/` 和 `js/` - 分别存储CSS样式表和JavaScript脚本,负责页面样式和交互效果。 7. `uploads/` - 用户上传的文件,如图片、文档等。 8. `database.sql` - 数据库结构和初始数据的SQL脚本,用于快速设置数据库...

    PHP实例开发源码—oExam php在线考试系统 服务器安装包.zip

    这通常包括PHP脚本、数据库配置文件、静态资源(如CSS、JavaScript)以及可能的系统文档。 【标签】"PHP" 指出这个项目是用PHP语言编写的。PHP是一种广泛使用的开源脚本语言,尤其适合于Web开发,能够嵌入到HTML中...

    PHP实例开发源码—php爱一网情深网址收藏系统.zip

    如果无法确定其用途,通常需要参考使用须知或其他文档来理解。 总的来说,这个压缩包提供的PHP实例项目是一个用于网址收藏的Web应用,涉及到的知识点包括但不限于: - PHP基础语法 - MySQL数据库操作(创建表、插入...

    PHP实例开发源码—OneHeart PHP.zip

    5. `css`、`js`目录:分别存放样式表和JavaScript脚本,用于页面样式和交互。 6. `includes`或`libraries`目录:包含可复用的函数或类库。 7. `controllers`、`models`、`views`:MVC(模型-视图-控制器)架构下的...

    PHP实例开发源码——TSimple.zip

    【标题】"PHP实例开发源码——TSimple.zip"是一个包含PHP编程实例的压缩文件,主要专注于使用PHP语言进行实际项目开发。TSimple可能代表一个简单的PHP框架或库,用于帮助开发者快速构建Web应用程序。 【描述】"PHP...

    PHP实例开发源码——TPshop开源商城源码 php版.zip

    【压缩包子文件的文件名称列表】中的"132676300324710814"可能是一个错误的文件名显示,通常压缩包内文件名会包含各种PHP文件、CSS样式表、JavaScript脚本、图片资源、数据库配置文件、文档说明等。例如: 1. `index...

    PHP实例开发源码-教育网站模板小兵建站CMS.zip

    【PHP实例开发源码-教育网站模板小兵建站CMS.zip】是一个包含了PHP源代码的压缩包,专门针对教育网站的构建。这个压缩文件提供了一个完整的教育网站模板,由小兵建站CMS(Content Management System)开发。CMS系统...

    PHP实例开发源码——Compxler PHP版.zip

    一个PHP项目可能包含`.php`源文件、配置文件(如`.ini`)、数据库配置(`.sql`或`.json`)、样式表(`.css`)、JavaScript文件(`.js`)、图片资源(`.png`、`.jpg`)以及其他支持文件,如文档(`.md`、`.txt`)、...

Global site tag (gtag.js) - Google Analytics