编程语言
首页 > 编程语言> > 缩小动态php样式表

缩小动态php样式表

作者:互联网

所以我一直在使用Minify压缩我的JS和CSS,这些都一直很顺利,直到我需要压缩一些动态的php样式表.

我试图用htaccess来欺骗它以为它是一个css文件,但后来我意识到它使用的绝对文件路径不会受到mod_rewrite的影响

无论如何,每当我指向一个php文件时,它总是返回’400 Bad Request’.除了编写自己的压缩脚本之外,还有任何想法可以解决这个问题吗?

解决方法:

我发现处理缩小和压缩样式表的最佳方法是自己动手.看看这段代码:

<?php
header("Content-Type: text/css");
header("Last-Modified: ".gmdate('D, d M Y H:i:s', filemtime($_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF']))." GMT");
header("Expires: ".gmdate('D, d M Y H:i:s', (filemtime($_SERVER['DOCUMENT_ROOT'].$_SERVER['PHP_SELF']) + 691200))." GMT");

//This GZIPs the CSS for transmission to the user
//making file size smaller and transfer rate quicker
ob_start("ob_gzhandler");
ob_start("compress");

//Function for compressing the CSS as tightly as possible
function compress($buffer) {
    //Remove CSS comments
    $buffer = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $buffer);
    //Remove tabs, spaces, newlines, etc.
    $buffer = str_replace(array("\r\n", "\r", "\n", "\t", '  ', '    ', '    '), '', $buffer);
    return $buffer;
}

//Main style
require_once($_SERVER['DOCUMENT_ROOT']."/templates/style/style.css");

//Other style
if($php_variable) {
    require_once($_SERVER['DOCUMENT_ROOT']."/templates/style/other.css");
}

ob_end_flush();
ob_end_flush();
?>

这里有很多事情,所以让我解释一下.

>将文件类型设置为CSS.
>为缓存控制设置Last-Modified和Expires标头(稍微超过一周的设置,您可以更改此设置).

Minify和GZIP

>使用ob_start,我们告诉它GZIP这个文件以及运行自定义函数compress.
> compress会在发送到浏览器时删除所有CSS注释和空白区域.这意味着您可以在源文件中保留所有注释和间距,以便于编辑,但只能将最小值发送到浏览器.

样式

>使用require导入样式表.为你想要的多种样式表做这件事;它们都会在一个HTTP请求中传递给用户.

使用您的新文件

你将像普通的CSS文件一样调用文件.

<style type="text/css" src="/path/to/css-script.php"></style>

结论

使用这种方法,你做了几件很棒的事情.

>为缓存提供正确的标题,快速回访您的网站.
> Minifys所有内容不包含额外的空格或注释.
>使用GZIP压缩文件以获得更小的文件大小.
>在一个HTTP请求中包含所有样式表,非常适合优化.
>避免使用@import语句……这本身就很棒.
>允许您保留多个样式表并使用PHP逻辑包含或不包含它们.
>允许您根据需要保持源样式表的间隔和注释,而不会对访问者产生任何影响.

您也可以对JavaScript使用相同的方法,虽然上面的压缩函数严格用于CSS,所以我会省略它.

将此技术与此缓存控制技术结合使用,您已经构建了一个非常棒的CSS / JS处理程序:How to force browser to reload cached CSS/JS files?

标签:php,css,dynamic,stylesheet,minify
来源: https://codeday.me/bug/20190730/1577755.html