不使用mod_gzip和mod_deflate压缩CSS和JS

4
我想压缩服务器上的CSS和JS文件,以减少加载时间,但遇到了问题。
我的主机是Streamline.net(犯了一个大错误,永远不要去那里),由于安全问题,他们不会激活mod_gzip和mod_deflate。
有人有没有其他方法可以压缩这些类型的文件(如果可能还包括图像文件),而不走mod_gzip和mod_deflate的路线?
非常欢迎回答。

你们支持哪些编程语言? - Gumbo
我不确定,我该怎么找出来? - DanC
问问你的 Web 主机?他们可能有 ASP 或 PHP。 - Adrian Grigore
@DanC:请向您的托管提供商咨询。 - Gumbo
抱歉,我以为(出于某种原因)你指的是其他事情。服务器支持PHP,网站的骨干是WordPress,并用PHP编写。 - DanC
5个回答

4

是的,答案是代码压缩

显然,它不能像 gzip 或者 deflate 那样压缩得那么多。但这有所帮助,并且使用正确的工具非常容易实现。


我已经压缩了所有的JS和CSS,但是我想要进一步压缩它们,以便最大化加载速度。 - DanC
2
@Dan:我相信你已经考虑过这个问题了,但为什么不更换你的主机呢?看起来你的需求已经超出了典型的“共享主机”提供的范围。 - Daniel Vassallo
我很不幸在了解主机、压缩或任何相关知识之前,就签订了长期合约!合同明年到期,所以现在正在探索在尽快离开之前补充现有的托管方案的想法! - DanC
4
@Dan: 我了解你的情况。然而,如果压缩对你真的很重要,我敢打赌,你花费在解决这个问题上的时间和精力,可能比你将剩余的托管承诺视为不可挽回成本 (http://en.wikipedia.org/wiki/Sunk_cost) 更昂贵。市面上有一些非常便宜的方案,可以让你完全掌控你的 Web 服务器,并带来许多其他明显的好处。 - Daniel Vassallo

2
您可以通过一个脚本运行您的文件,该脚本会为您gzip它们并添加适当的过期标头。 要么设置URL重写,要么手动重写URL:
<script src="js/somescript.js"></script>

成为
<script src="compress.php?somescript.js"></script>

在`compress.php`中,你可以做这样的事情:
<?php
$file = 'js/' . basename($_SERVER['QUERY_STRING']);
if (file_exists($file)) {
    header ('Last-Modified: ' . date('r',filemtime($file));
    header ('Content-Type: text/javascript'); // otherwise PHP sends text/html, which could confuse browsers
    ob_start('ob_gzhandler');
    readfile($file);
} else {
    header('HTTP/1.1 404 Not Found');
}

显然,这可以扩展到提供HTTP缓存,和/或即时压缩,进一步加快您访问者的浏览速度。

这听起来很有趣,我会尝试一下并报告回来,如果我的编码彻底失败了 - 干杯! - DanC

2

不要使用mod_gzip来动态压缩CSS和JavaScript文件,你可以自己先gzip压缩再上传。

这会在上传CSS和JavaScript之前增加一个步骤,但它可以工作,并且与mod_gzip相比,可能甚至可以为每个请求节省一点服务器处理时间。

在Mac OS X上,通过命令行gzip压缩文件非常简单,例如:

gzip -c styles.css > styles-gzip.css

请确保这些文件以正确的内容类型标头提供服务。


尽管这种情况今天相对较少见,但如果IE6(其对gzip的支持“几乎”正常)在gzipped文件上出现故障,您该怎么办? - Piskvor left the building
@Piskvor:检查浏览器发送的HTTP头。如果不存在“Accept-Encoding: gzip, deflate”,则发送一个非压缩版本的文件。 - Geert
“当IE6在一个gzip文件上出现问题时,你会怎么做?”我必须承认,我没有足够的经验遇到过这种情况。 - Paul D. Waite

1

顺便提一下:如果图像已经以压缩格式保存,并且仍然对用户具有良好的可视效果,那么压缩图像将没有任何益处。


可能是个好点子,感谢指出来 - 我在这里有点过于关注页面速度了! - DanC
如果您能够反复重新压缩同一个文件,直到它可以用单个比特进行传输,那就太好了,不是吗?;-) - Adrian Grigore
真是太棒了!我们即将获得 YSlow 的 100/100 分数! - DanC
唯一的问题是,所有的网站看起来都会非常相似...;-) - Adrian Grigore
但是快速而出色,这不是每个客户都想要的吗? :) - DanC
1
是的!为了弥补相似内容,我们可以将所有网站类型都塞进一个网站中。输入Amazonoogletubewitterbook.com。 - Adrian Grigore

0
大多数编程语言都支持一些数据或文件压缩格式,如ZLIB或GZIP。因此,您可以使用编程语言将文件压缩为其中之一的格式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接