相关疑难解决方法(0)

如何强制Apache使用手动预压缩的CSS和JS文件的gz文件?

我有一个简单的问题.我有webdirectory /css,里面是文件style.css.我手动gzipped这个文件并保存为style.css.gz.我想节省CPU周期,以便在每次请求时都没有压缩CSS文件.如何配置Apache以查找此.gz文件并提供它而不是.css一遍又一遍地压缩文件?

注意:我不希望Apache自己创建.gz文件.在我的场景中,我必须.css.gz手动创建文件 - 在特定请求上使用PHP.

apache caching gzip

29
推荐指数
4
解决办法
2万
查看次数

如何在apache中托管预压缩的静态内容?

我主持一个基本上由.html和.data文件组成的JavaScript游戏.如果我用gzip压缩它们,它们的大小会缩小到25%.所以我想这样做.

我不是百分百肯定,但我认为使用mod_gzip或mod_deflate即时进行压缩,因为内容不会改变,所以总是浪费cpu时间.

所以我想预先编译内容.因此,我将.gz放在未压缩文件旁边,并将重写规则放在.htaccess中:

RewriteEngine on 
# If client accepts compressed files 
RewriteCond %{HTTP:Accept-Encoding} gzip 
# and if compressed file exists 
RewriteCond %{REQUEST_FILENAME}.gz -f 
# send .html.gz instead of .html 
RewriteRule ^(.+)\.(html|css|js|data)$ $1.$2.gz [T=text/$2,E=GZIP:gzip,L] 
Header set Content-Encoding gzip env=GZIP 
Run Code Online (Sandbox Code Playgroud)

重定向工作正常,我可以请求game.html并实际获得发送的game.html.gz. 但是,浏览器不会只显示它.相反,它会询问我保存文件的位置.我该如何解决这个问题?或者也许有另一种方法来实现我的目标?

javascript apache .htaccess mod-rewrite http-compression

20
推荐指数
3
解决办法
1万
查看次数

如何预压缩非常大的html文件

我需要使用gzip或deflate预压缩一些非常大的html/xml/json文件(大型数据转储).我从不想要提供未压缩的文件.它们是如此庞大和重复,以至于压缩可能会非常好地工作,虽然一些旧的浏览器不能支持解压缩,但我的典型客户不会使用它们(尽管如果我能产生某种'嘿你需要的那样会很好升级浏览器的消息)

我自动生成文件,我可以轻松生成.htaccess文件以与每种文件类型一起使用.基本上我想要的是一些总是在mod_gunzip版本.因为文件很大,并且因为我将重复提供它们,所以我需要一种方法,允许我在命令行上压缩一次,非常好.

我在这个网站上找到了一些关于如何使用gzip进行此操作的信息,但我想知道是否有人可以指导我如何使用deflate来做到这一点.奖励指向一个完整的答案,包括我的.htaccess文件应该是什么样子,以及我应该使用的命令行代码(GNU/Linux)来获得最佳压缩.答案的超级奖励积分还解决了如何向不兼容的浏览器发送"抱歉没有文件"消息.

如果我们可以创建一个"预压缩"标签来涵盖这样的问题,那将是很可爱的.

-FT

linux compression apache gzip deflate

10
推荐指数
1
解决办法
3265
查看次数

让Apache自动解压缩文件,但仅在需要时

我想保持我的web服务器的所有静态文件在本地压缩,并根据请求压缩或不压缩它们.

在这些问题的答案我怎么能预先压缩与Apache 2.X的mod_deflate模块文件吗?,接近,因为实际上通过启用MultiViews并使用正确的AddEncoding,我可以让Apache foo.tar.gz在我请求时从我的web服务器返回压缩文件foo.tar,并且它带有正确的Content-Encoding:标头.

但这仅在客户端包含Accept-Encoding: gzip在发送到服务器的标头中时才有效.OTOH如果客户端不支持gzip编码,我的服务器告诉我,foo.tar对我来说没有"可接受" .

如果我使用它,我可以让Apache在发送之前解压缩该tarball AddOutputFilter INFLATE tar.但是,如果我这样做,那么服务器也会在我请求时foo.tar.gz(或者当我指定我接受gzip编码时)解压缩内容,这显然是我不想要的.

那么当客户端不支持gzip内容编码时如何让Apache解压缩文件,而在其他情况下如何提供预压缩文件呢?

编辑:根据@ covener的建议,我尝试了以下方法:

AddEncoding x-gzip .gz .tgz
RemoveType application/x-gzip .gz .tgz
AddType application/x-tar .tgz

<Location /packages>
  FilterDeclare smgunzip CONTENT_SET
  FilterProvider smgunzip INFLATE req=Accept-Encoding !$gzip
  FilterChain smgunzip
</Location>
Run Code Online (Sandbox Code Playgroud)

[在这里使用Apache-2.2.22.]但结果实际上比前三行更糟糕:当我请求.tar.gz文件时,它现在返回而没有"Content-Encoding:",当我请求.tar文件时,我收到了tar.gz的内容(即仍然是压缩的),无论"Accept-Encoding:"标题如何,仍然没有"Content-Encoding:".

apache mod-deflate mod-negotiation

3
推荐指数
1
解决办法
1442
查看次数