PHP合并压缩css输出 模块化css撰写

广告位招租
扫码页面底部二维码联系

从某种角度讲,我们自从被压缩输出洗脑后,转载请注明出处:www.tangshuang.net未经授权,禁止复制转载。都在不断追求把css和js合并压缩后输出【本文受版权保护】原创内容,盗版必究。,以减少http请求数,达到加速网页的目本文版权归作者所有,未经授权不得转载。本文版权归作者所有,未经授权不得转载。的。但是昨天看到雅虎的做法是,直接将cs【原创内容,转载请注明出处】未经授权,禁止复制转载。s写在网页中,使http请求数减少至0,【版权所有】唐霜 www.tangshuang.net【本文受版权保护】或许大道至简。而今天,我们则利用php,【原创内容,转载请注明出处】未经授权,禁止复制转载。将css压缩为一个请求,实现我们目前认为【转载请注明来源】【版权所有,侵权必究】最简洁的输出方式。

【作者:唐霜】【关注微信公众号:wwwtangshua未经授权,禁止复制转载。【作者:唐霜】ngnet】

我已经将该项目托管在GitHub,你可以【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。通过这里fork它。完整的代码已经有了,这里就不未经授权,禁止复制转载。未经授权,禁止复制转载。列出来,只做剖析和使用方法介绍。

本文作者:唐霜,转载请注明出处。转载请注明出处:www.tangshua【关注微信公众号:wwwtangshuangnet】原创内容,盗版必究。ng.net本文作者:唐霜,转载请注明出处。【访问 www.tangshuang.n【原创内容,转载请注明出处】【访问 www.tangshuang.net 获取更多精彩内容】et 获取更多精彩内容】

ob_输出

【转载请注明来源】本文作者:唐霜,转载请注明出处。【转载请注明来源】

源代码中使用了ob_start和ob_e【本文受版权保护】本文版权归作者所有,未经授权不得转载。nd_flush两个函数,实现输出,而在【版权所有,侵权必究】转载请注明出处:www.tangshuang.netob_start的参数中传入了一个函数c【作者:唐霜】【访问 www.tangshuang.net 获取更多精彩内容】ompress_css。

【访问 www.tangshuang.n本文作者:唐霜,转载请注明出处。【作者:唐霜】et 获取更多精彩内容】未经授权,禁止复制转载。

ob_start表示开始内容缓存,通过i【原创不易,请尊重版权】未经授权,禁止复制转载。nclude将多个css包含进来,如果没【作者:唐霜】本文作者:唐霜,转载请注明出处。有ob_start,按理应该是直接显示i【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。nlcude的css文件的内容。但是加入【关注微信公众号:wwwtangshuangnet】【本文首发于唐霜的博客】ob_start后,并不是直接显示出来,未经授权,禁止复制转载。【访问 www.tangshuang.net 获取更多精彩内容】而是在执行ob_end_flush的时候【本文首发于唐霜的博客】【版权所有】唐霜 www.tangshuang.net才将内容显示出来,在这之前,所有的内容被著作权归作者所有,禁止商业用途转载。著作权归作者所有,禁止商业用途转载。存放在缓存(内存)中。

【原创内容,转载请注明出处】原创内容,盗版必究。【本文受版权保护】

而给ob_start传入compress_css作为参数,则是在执行ob_end_flush之前,对内存的内容进行compress_转载请注明出处:www.tangshuang.net【转载请注明来源】css操作,因此,在输出内容的时候,cs【未经授权禁止转载】转载请注明出处:www.tangshuang.nets被压缩清理过了。

【原创内容,转载请注明出处】【版权所有】唐霜 www.tangshu【关注微信公众号:wwwtangshuangnet】【版权所有,侵权必究】ang.net未经授权,禁止复制转载。本文作者:唐霜,转载请注明出处。

compress css

【作者:唐霜】本文版权归作者所有,未经授权不得转载。

接下来我们简单讲解一下css的压缩清理。

转载请注明出处:www.tangshua著作权归作者所有,禁止商业用途转载。未经授权,禁止复制转载。ng.net著作权归作者所有,禁止商业用途转载。【原创不易,请尊重版权】
function compress_css($css) {
  $css = preg_replace('#\/\*[^*]*\*+([^/][^*]*\*+)*\/#isU','',$css); // 清除块级注释
  $css = str_replace(array('<!--','-->'),'',$css);
  $css = str_replace(array("\r","\r","","\t"),'',$css); // 清除换行、缩进
  $css = preg_replace("/\s(?=\s)/",'',$css); // 连续的空格替换为一个空格
  $css = preg_replace("#\s*(:|;|\{|\})\s*#","$1",$css); // 清除一些特定字符前后的空格,这里是可以扩展的,可以根据你的实际情况,添加或删除某些字符
  return $css;
}

代码很简单,虽然可能会有一些遗漏,但是基原创内容,盗版必究。本文版权归作者所有,未经授权不得转载。本上可以将原有的代码压缩到比较小的容量。

【未经授权禁止转载】未经授权,禁止复制转载。【本文首发于唐霜的博客】

浏览器缓存

【版权所有】唐霜 www.tangshu本文版权归作者所有,未经授权不得转载。原创内容,盗版必究。ang.net【版权所有】唐霜 www.tangshu【转载请注明来源】【原创不易,请尊重版权】ang.net【本文首发于唐霜的博客】

浏览器缓存基于URL,因此,访客第一次访【原创内容,转载请注明出处】【未经授权禁止转载】问你的网站的时候,请求1次该css即可,【未经授权禁止转载】转载请注明出处:www.tangshuang.net第二次访问的时候,会直接从浏览器缓存中读【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。取css。

未经授权,禁止复制转载。【版权所有】唐霜 www.tangshu【未经授权禁止转载】【版权所有】唐霜 www.tangshuang.netang.net

但是有一个小点需要注意,由于本文希望通过【本文首发于唐霜的博客】未经授权,禁止复制转载。模块化的方式载入css,所以,如果你不同原创内容,盗版必究。【访问 www.tangshuang.net 获取更多精彩内容】的页面载入不同的css,就会发现,请求不【版权所有,侵权必究】本文版权归作者所有,未经授权不得转载。同的css的时候,会发出新的http请求转载请注明出处:www.tangshuang.net【访问 www.tangshuang.net 获取更多精彩内容】。所以这里有一个取舍,你是愿意一次性加载本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。所有的css,然后让用户在以后的访问中直本文作者:唐霜,转载请注明出处。本文版权归作者所有,未经授权不得转载。接读取浏览器缓存中的css呢,还是愿意在【本文受版权保护】【本文首发于唐霜的博客】不同的页面加载不同的css,以让css的转载请注明出处:www.tangshuang.net转载请注明出处:www.tangshuang.net容量达到最小而加快网页速度?

本文版权归作者所有,未经授权不得转载。【原创不易,请尊重版权】【关注微信公众号:wwwtangshua【原创内容,转载请注明出处】著作权归作者所有,禁止商业用途转载。ngnet】原创内容,盗版必究。

模块化载入

【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。

我们以往的习惯是,将所有的css写在一个本文作者:唐霜,转载请注明出处。【版权所有】唐霜 www.tangshuang.netcss文件里面,然后通过压缩,创建一个m【本文首发于唐霜的博客】【访问 www.tangshuang.net 获取更多精彩内容】in.css文件,但是仍然是所有的css【未经授权禁止转载】著作权归作者所有,禁止商业用途转载。。这会使很多没有起到实际作用的css被载未经授权,禁止复制转载。著作权归作者所有,禁止商业用途转载。入,从而影响网页的加载速度。同时,如果你未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】修改了某个样式,需要再次去压缩一遍所有的原创内容,盗版必究。【本文首发于唐霜的博客】css,不利于开发调试。

转载请注明出处:www.tangshua【版权所有,侵权必究】未经授权,禁止复制转载。ng.net转载请注明出处:www.tangshua著作权归作者所有,禁止商业用途转载。【访问 www.tangshuang.net 获取更多精彩内容】ng.net转载请注明出处:www.tangshua【原创内容,转载请注明出处】转载请注明出处:www.tangshuang.netng.net【关注微信公众号:wwwtangshua本文版权归作者所有,未经授权不得转载。转载请注明出处:www.tangshuang.netngnet】

而使用minify-css.php的时候【转载请注明来源】【作者:唐霜】,你可以写很多个css文件,每个css文【未经授权禁止转载】【原创内容,转载请注明出处】件功能用途不同,也可以放心的把插件的cs本文版权归作者所有,未经授权不得转载。【转载请注明来源】s和页面的css分开来。你甚至可以为你的【本文受版权保护】转载请注明出处:www.tangshuang.net网站每个页面撰写特殊的css。总之,cs【关注微信公众号:wwwtangshuangnet】本文作者:唐霜,转载请注明出处。s文件的个数并不影响最终的结果。

本文版权归作者所有,未经授权不得转载。【版权所有】唐霜 www.tangshu本文作者:唐霜,转载请注明出处。【本文首发于唐霜的博客】ang.net

在url中使用一个f=参数,把想要保护的【原创内容,转载请注明出处】【版权所有,侵权必究】文件全部列出来,用一个英文逗号分开。比如【原创内容,转载请注明出处】原创内容,盗版必究。base.css,../plugins/a/css/a.css,index.css

【原创不易,请尊重版权】著作权归作者所有,禁止商业用途转载。【版权所有,侵权必究】本文作者:唐霜,转载请注明出处。

在列出这些文件的时候,必须要注意他们的载【版权所有】唐霜 www.tangshuang.net未经授权,禁止复制转载。入顺序,css的优先级是从文件的末尾开始原创内容,盗版必究。本文作者:唐霜,转载请注明出处。的,后面的样式会覆盖前面的样式,因此文件未经授权,禁止复制转载。【关注微信公众号:wwwtangshuangnet】的载入顺序也很关键。

【原创内容,转载请注明出处】转载请注明出处:www.tangshua【转载请注明来源】转载请注明出处:www.tangshuang.netng.net本文作者:唐霜,转载请注明出处。未经授权,禁止复制转载。

而通过这种方式,不仅能让你的网页css载转载请注明出处:www.tangshuang.net原创内容,盗版必究。入缩小,而且对于撰写开发来说,也更加灵活【本文首发于唐霜的博客】转载请注明出处:www.tangshuang.net

【本文受版权保护】【原创内容,转载请注明出处】【原创内容,转载请注明出处】本文版权归作者所有,未经授权不得转载。

2016-01-17 6126

为价值买单,打赏一杯咖啡

本文价值61.26RMB
已有1条评论
  1. […] 如果你读过我之前的《PHP合并压缩css输出 模块化css撰写》可以先了解我对缓存文件的一些处理方式,以及合并文件、压缩代码的一些想法。而本插件的实现原理则基本上和上面的这篇文章里介绍的差不多。 […]