我有一个同时具有动态生成(PHP)和静态内容的网站。设置 Apache 以根据内容协商透明地压缩所有内容是一件小事。
但是,我感兴趣的是不压缩很少(如果有的话)更改的静态内容,而是以“asis”方式提供预压缩数据。
这背后的想法是减少延迟并节省 CPU 功率,同时更好地压缩。基本上,我不想一遍又一遍地压缩相同的数据,我希望服务器sendfile
在不触及内容的情况下获取内容,但具有适当的标题。而且,理想情况下,它将.html
与.html.gz
文件无缝工作,在一种情况下使用透明压缩,在另一种情况下不使用。
有 mod_asis,但这不会提供正确的标头(最重要的是影响缓存和代理操作的标头),并且它与内容协商无关。添加content-encoding
for.gz
似乎是正确的事情,但什么也没做,“.html.gz”网页显示为下载(也许这会干扰某些默认类型映射?)。
看起来gatling 网络服务器在这方面做了我想要的,但我真的更喜欢留在 Apache,因为尽管有人可以责怪 Apache,但它是一个多年来一直运行良好的主流服务器。
另一种解决方法是使用不同端口或子域上的另一台服务器提供静态内容,但我更喜欢它只是“不可见”地工作,并且系统没有变得比必要的更复杂。
是否有一个众所周知的配置习惯使 Apache 按照指示的方式运行?