标签: gzip

如何在 Apache2 中打开 gzip?

我只是做了:

sudo aptitude install apache2
Run Code Online (Sandbox Code Playgroud)

这就是我的服务器的设置方式。没有额外的模块,什么都没有。

我在 ubuntu jaunty 上。

linux unix gzip apache-2.2

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

IIS 7.5 忽略 web.config 中的 HttpCompression 设置

我正在尝试为 mime 类型启用动态压缩application/json

在 applicationHost.config 中,我进行了以下更改:

<section name="httpCompression" allowDefinition="AppHostOnly" overrideModeDefault="Allow" />
Run Code Online (Sandbox Code Playgroud)

我还尝试使用以下命令解锁该部分:

appcmd unlock config /section:system.webserver/httpcompression
Run Code Online (Sandbox Code Playgroud)

我的 web.config 设置(与 applicationHost.config 相同,但具有额外的 mimetype):

    <httpCompression directory="%SystemDrive%\inetpub\temp\IIS Temporary Compressed Files">
        <scheme name="gzip" dll="%Windir%\system32\inetsrv\gzip.dll" />
        <staticTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="application/atom+xml" enabled="true" />
            <add mimeType="application/xaml+xml" enabled="true" />
            <add mimeType="*/*" enabled="false" />
        </staticTypes>
        <dynamicTypes>
            <add mimeType="text/*" enabled="true" />
            <add mimeType="message/*" enabled="true" />
            <add mimeType="application/x-javascript" enabled="true" />
            <add mimeType="application/json" enabled="true" />
            <add mimeType="*/*" enabled="false" /> …
Run Code Online (Sandbox Code Playgroud)

iis compression gzip iis-7.5

8
推荐指数
1
解决办法
8094
查看次数

Apache 压缩 .xml.gz 文件

我注意到谷歌网站管理员工具中关于站点地图的 gzip 版本的错误。结果sitemap.xml.gz文件被压缩了两次:一次是在创建时(应该是这样),另一次是在服务时。

.htaccess文件有此规则

AddOutputFilterByType DEFLATE application/xml
Run Code Online (Sandbox Code Playgroud)

我认为它与 gzip 压缩的 XML 文件不匹配,但显然删除它可以解决问题。

我究竟做错了什么?

compression .htaccess gzip mod-deflate apache-2.2

7
推荐指数
1
解决办法
715
查看次数

nginx gzip_static:为什么需要非压缩文件?

我正在使用在Ubuntu 12.04.4上运行的nginx 1.4.4。 nginx 反向代理一组Rails应用程序服务器。

直接提供静态文件(主要是资产),而不会影响应用程序服务器。
我已将其设置为gzip响应并在可用时使用预压缩文件。

http {
  gzip on;
  gzip_http_version 1.0;
  gzip_proxied any;
  # other ngx_http_gzip_module directives...

  server {
    # proxy configuration

    location ^~ /assets/ {
      gzip_static on;
      expires max;
      add_header Cache-Control public;
      # root is inherited
      try_files $uri =404;
      error_page 404 /404.html;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这有效。
我已经使用真实的预压缩资产和具有相同名称但内容不同的虚拟非压缩资产对其进行了测试:

/assets/application-a45d6...e2593.css         # dummy content
/assets/application-a45d6...e2593.css.gz      # real CSS
Run Code Online (Sandbox Code Playgroud)

我可以看到这种切换,gzip_static onoff会导致 nginx 正确提供文件的预期版本。 …

nginx gzip

7
推荐指数
2
解决办法
1万
查看次数

gzip 不适用于 nginx 的 JSON 响应

我试图找出为什么我的 JSON 响应没有被 gzip 压缩。在我的主ngninx.conf中,我有:

gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6;
gzip_buffers 16 8k;
gzip_http_version 1.1;
gzip_min_length 256;
gzip_types    text/plain application/javascript application/x-javascript text/javascript text/xml text/css text/html application/json  application/vnd.ms-fontobject application/x-font-ttf font/opentype image/svg+xml image/x-icon;
Run Code Online (Sandbox Code Playgroud)

然后在我的脚本中我将内容类型打印为:

print $IN->header( 'application/json' );
Run Code Online (Sandbox Code Playgroud)

其转换为:

Content-Type: application/json \n\n
Run Code Online (Sandbox Code Playgroud)

我在那里看到正确的内容类型,它没有压缩:

curl -H "Accept-Encoding: gzip" -I 'https://www.example.com/cgi-bin/links/spots_load_new.cgi?catid=9&linkid=0&t=luna'
HTTP/1.1 200 OK
Server: nginx
Date: Thu, 07 Dec 2017 10:18:58 GMT
Content-Type: application/json
Connection: keep-alive
Keep-Alive: timeout=60
Access-Control-Allow-Origin: *
Run Code Online (Sandbox Code Playgroud)

如果我在 JS 文件上测试它,它工作正常:

curl -H "Accept-Encoding: gzip" -I …
Run Code Online (Sandbox Code Playgroud)

nginx gzip

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

在 NGINX 上同时启用 brotli 和 gzip?

是否可以在 NGINX 中同时启用 gzip 和 brotli 压缩?如果客户端两者都支持则返回brotli,如果只有gzip/brotli则返回指定的,否则如果不支持gzip/brotli则返回纯文本

nginx gzip

7
推荐指数
1
解决办法
4736
查看次数

Web 服务器/http 协议如何处理版本控制和压缩?

当客户端浏览器从 Web 服务器请求文件时,我知道会执行某种检查,因为 Web 浏览器可能已经缓存了为网页提供服务所需的文件。因此,如果缓存中存在文件,则不会发送任何文件。但是如果服务器上的文件自从文件被缓存在浏览器中后发生了变化,无论如何都会发送和更新文件。

然后,如果您在服务器上启用了 gzip 之类的压缩,则必须在途中对要提供给客户端的文件进行 gzip,这需要一些服务器端处理。

但这是如何管理的?在我看来,逻辑方法是,Web 服务器也应该有一个缓存,其中包含在特定时间跨度内请求的所有文件的最新版本,因此是这些文件的压缩版本,这样压缩就不必了每次请求文件时执行。

而且,最终如何请求文件?浏览器是每次在 HTML 代码中遇到一个文件并且特定文件未存储在本地缓存中时询问文件,还是将所有需要的文件加起来并同时询问整个文件?

但这只是从编程的角度猜测,我真的不知道。

如果 Web 服务器系统之间的答案非常不同,那么我主要对 Apache 感兴趣,但也欢迎其他答案。

http compression web-server version-control gzip

6
推荐指数
1
解决办法
848
查看次数

使用 gzip 提供静态文件时,强制 Nginx 发送 Content-Length 标头

我们正在运行 Nginx 0.7.65[-1ubuntu2.3]。我刚刚注意到,当使用alias指令 and提供本地静态文件时gzip onContent-Length没有发送标头。由于它从本地文件系统提供文件,因此获取长度应该没有任何问题。如何强制 Nginx 发送Content-Length包含这些文件的标头?

nginx gzip static-content

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

nginx gzip Vary 标头和现有的 Vary 标头

我正在尝试激活 gzip 压缩,并且已将选项 gzip_vary 设置为开启;包括 Vary: Accept-Encoding 标头。

问题是,我的应用程序已经设置了 Vary: 标头。所以响应现在有两个 Vary:标头,一个来自我的应用程序,一个来自 nginx。

HTTP/1.1 200 OK
Server: nginx
Date: Sat, 17 Dec 2016 13:28:38 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
Last-Modified: Sat, 17 Dec 2016 13:28:38 GMT
Cache-Control: no-cache, no-store, must-revalidate, max-age=0
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Vary: User-Agent
Content-Encoding: gzip
Run Code Online (Sandbox Code Playgroud)

但我想它应该是这样的:

Vary: Accept-Encoding, User Agent
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

nginx gzip

6
推荐指数
1
解决办法
3063
查看次数

无法在 Ubuntu Linux 18.04 上压缩 18GB 文件

我以前从未发生过这种情况,但我无法执行简单的任务,例如在 Ubuntu Linux 18.04 上使用任何流行的压缩工具(例如gzipbzip27z )压缩 18.5 GB 文件。他们都报告了类似的警告(不是错误)消息,声称文件大小在压缩期间发生了变化,而实际上没有其他进程正在访问该文件。例如,当尝试“tar-gz”时,该工具报告:File shrank by <nnnnnnnn> bytes; padding with zeros,以错误代码 1 退出,tar 的联机帮助页说这是由于压缩期间文件更改造成的:

退出代码 1:某些文件不同。如果使用 --compare (--diff, -d) 命令行选项调用 tar,这意味着存档中的某些文件与其磁盘对应文件不同。如果 tar 被赋予 --create、--append 或 --update 选项之一,则此退出代码意味着某些文件在存档时已更改,因此生成的存档不包含文件集的确切副本。

该文件是一个 VMDK,当然,当我压缩它时,关联的 VM 会完全关闭。另一方面,我注意到当压缩文件达到 280 MB 左右时,所有压缩工具都会失败。

我已经在 ServerFault 上检查了其他类似的问题,但我仍然没有得到任何提示来弄清楚发生了什么。对链接问题投票最多的答案说,这不是错误,压缩工具只是“简化”了一堆零字节,但是如果我在解压缩 VMDK 文件后尝试运行 VM,它无法声明磁盘已损坏。

我完全坚持这一点。关于可能发生什么的任何想法?

更新

在尝试使用该cp命令将文件复制到另一个目录时,它在读取文件时转储​​了 I/O 错误。另一方面,dmesg在读取文件的特定块时报告 I/O 错误。一切都指向磁盘错误(尽管e2fsck说一切正常并且有 0 个坏块)。由于我已经有了 VM 的备份,我将尝试更改主机的磁盘并重新安装 Ubuntu 的新副本,然后看看会发生什么。我一直在发布这个问题,直到我得到一些结果。

compression tar gzip vmdk ubuntu-18.04

6
推荐指数
1
解决办法
202
查看次数