我在一台运行 W2K8 的 IIS7 机器上有许多网站。
我正在使用Fiddler来帮助我确定某些内容是否被压缩。没有什么是。
所以,我在谷歌上搜索了一些东西并尝试了一些东西。我有以下...
C:\Windows\System32\inetsrv>appcmd set config -section:urlCompression /doDynamic
Compression:true
Applied configuration changes to section "system.webServer/urlCompression" for "
MACHINE/WEBROOT/APPHOST" at configuration commit path "MACHINE/WEBROOT/APPHOST"
C:\Windows\System32\inetsrv>appcmd list config -section:urlCompression
<system.webServer>
<urlCompression doDynamicCompression="true" />
</system.webServer>
C:\Windows\System32\inetsrv>appcmd list config -section:serverRuntime
<system.webServer>
<serverRuntime frequentHitThreshold="1" />
</system.webServer>
Run Code Online (Sandbox Code Playgroud)
我已确保 urlCompression、httpCompression 和 serverRuntime 部分已解锁。
我还在我的 web.config 中添加了以下内容:-
<system.webServer>
<serverRuntime frequentHitThreshold="1" frequentHitTimePeriod="00:10:00" />
<!-- NOTE: This requires the following section to be unlocked: appcmd set config -section:urlCompression /doDynamicCompression:true -->
<urlCompression doDynamicCompression="true" dynamicCompressionBeforeCache="true" /> …Run Code Online (Sandbox Code Playgroud) 在我看来,Apache 2.2 中的 mod_deflate 总是会返回:
内容编码:gzip
绝不:
内容编码:放气
有人向我解释说,虽然可能存在 deflate 算法,但 mod_deflate 以文件格式命名,其中算法可以是以下任何一种:
gzip,bzip。压缩包
在这三个中, mod_deflate 提供了 gzip。
似乎 gzip 是 Web 浏览器中最流行和最受广泛支持的算法,但我知道一些 Web 服务器和代理确实返回 Content-Encoding: deflate。
除了模块名称的混淆之外, mod_deflate 确实只会返回 Content-Encoding: gzip?
谢谢你。
我在堆栈溢出上发布了这个,但有人建议我在这里可能会有更多的运气:
我之前没有使用 deflate 对网页进行编码,所以这对我来说是新的领域,但是当我查看 ff 中的网络流量时,我的 all.js 文件现在从 427kb 变为 117kb,所以我似乎可以在这里使用它。但是在IE9中没有变化。我的响应头说 Content-Encoding: gzip in FF but not IE9
这是我的.htaccess:
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>
Run Code Online (Sandbox Code Playgroud)
IE9 中 all.js 的请求头:
Key Value
Request GET /all.js HTTP/1.1
Accept application/javascript, */*;q=0.8
Referer http://www.alexchapman.co.uk/
Accept-Language en-GB
User-Agent Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding gzip, deflate
Host static.alexchapman.co.uk
Connection Keep-Alive
Cache-Control no-cache
Run Code Online (Sandbox Code Playgroud)
IE9 中 all.js 的响应头:
Key Value
Response HTTP/1.1 200 OK
Date …Run Code Online (Sandbox Code Playgroud) 我正在将项目转移到新生产服务器时遇到问题。PHP 应用程序的 HTML 输出没有被 Apache mod_deflate 模块压缩。其他资源,如样式表和 javascript 文件,甚至与 PHP 输出具有相同内容类型 (text/html) 的 html 页面,都被压缩了!
项目在 .htaccess 中使用以下规则(来自 HTML5 样板):
<IfModule mod_deflate.c>
# 对损坏的标头强制放气 developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
<IfModule mod_setenvif.c>
<IfModule mod_headers.c>
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~ -]{4,13}$ HAVE_Accept-Encoding
RequestHeader 附加 Accept-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
</IfModule>
</IfModule>
# HTML、TXT、CSS、JavaScript、JSON、XML、HTC:
<IfModule filter_module>
过滤声明压缩
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/html
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/css
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/plain
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/xml
FilterProvider COMPRESS DEFLATE resp=Content-Type $text/x-component
FilterProvider COMPRESS DEFLATE resp=Content-Type $application/javascript
FilterProvider COMPRESS DEFLATE resp=Content-Type … 当我使用 Chrome 浏览到运行 nginx 的 SSL 保护站点时,我看到我使用的是 TLS 1.0、AES_256_CBC 和 SHA-1,以及 DHE_RSA 作为密钥交换。这一切都很好,并且符合我的密码套件设置。
但是,我也在使用 DEFLATE 压缩。在我看来这是多余的,因为所有需要的内容(主要是 JSON 文件)都已经被 gzip 压缩了。有什么方法可以关闭 nginx 中 SSL 使用的压缩压缩?
我遇到了一些麻烦mod_deflate……具体来说,它实际上并没有使任何东西泄气。
我正在运行 Apache2 和 Debian 4。我已经a2enmod deflate将其放入/etc/apache2/mods-enabled/deflate.conf:
AddOutputFilterByType DEFLATE text/html text/plain
Run Code Online (Sandbox Code Playgroud)
然而,当 I 时curl -I http://host/robots.txt,我没有看到任何表明输出被压缩的标题(当 I 时tail access.log,这种怀疑得到了证实,并且DeflateFilterNote在日志中看到 my是-)。我知道“它已插入”,因为如果我添加:
SetEnv force-gzip "yes"
Run Code Online (Sandbox Code Playgroud)
输出被压缩。
那么,我是否在做一些明显而愚蠢的错误?或者是什么?
在我们的设置中,某些文件在到达用户浏览器的途中没有被压缩。
例如
http://myhostname.com/css/build/20120904-1.css
http://myhostname.com/js/dojo/dn/main.js?20120904-1
http://myhostname.com/js/jquery-min/compiled.js?20120725-4
不能拉链。
我目前的配置:
location ~* \.(js|css|png|jpg|jpeg|gif|ico)\.*+$ {
if ($args ~ [0-9]\.*+) {
expires max;
break;
}
expires max;
log_not_found off;
gzip on;
}
Run Code Online (Sandbox Code Playgroud)
需要调整什么才能让gzip飞起来?我已经尝试了其他几个选项,但不想继续尝试和错误。
非常感谢。
更多信息:也许还有另一个问题。Firebug 和 pingdom 工具向我显示压缩后的大小,而 Chrome Developer Bar 和 Google PageSpeed Insights 显示“没有压缩活动”
为方便起见,该网站的链接是http://diginights.com
我正在使用 mod_deflate 即时压缩我的 .css 和 .js 文件:
<ifmodule mod_deflate.c> AddOutputFilterByType DEFLATE text/text text/html text/plain text/xml text/css application/x-javascript application/javascript </ifmodule>
问题是这会动态压缩文件,在处理大文件时会占用一些系统资源。
所以我想预压缩我的文件,以便直接提供它们以降低服务器负载。我想将它们与其他 css 和 js 文件(如 style.css 和 style.gz)一起存储,然后使用 php 标头检查客户端是否接受 gzip 编码,以决定是否提供 .css 或 .gz 文件。检查这不是问题。问题是如何预压缩文件。
我碰到一些题目是这样,但他们没有为我工作。它看起来很简单,但它给了我 500 内部服务器错误。
是否有任何工具或任何可以完成这项工作的工具?
我已经在我的服务器(centos6.5 64bit)上安装了 ddos deflate 并且在服务器邮箱中我看到 ddos deflate 已被列入黑名单空 Ip。
当我在 ssh 上运行此命令时,我看到:
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n
...
3 2.186.85.154
3 5.134.135.148
3 5.239.236.176
3 5.250.23.249
3 78.39.67.226
3 95.80.153.13
4 87.248.150.152
9 199.201.121.153
22 95.80.176.162
762 127.0.0.1
4649
Run Code Online (Sandbox Code Playgroud)
您会看到有 4649 个来自空 IP 的连接。这个问题的原因是什么,我该如何解决?
deflate ×9
compression ×5
apache-2.2 ×4
gzip ×3
mod-deflate ×2
nginx ×2
ddos ×1
iis-7 ×1
netstat ×1
php ×1
ssl ×1
web-server ×1