0

我目前正在运行 Magento 2.1.14,并已根据 Magento 文档以及该站点上其他访问量很大的帖子启用 gzip。我还与我的托管服务提供商一起检查了是否在服务器端启用了 Mod_deflate。

此外,我在我的本地机器上有一个我的站点的副本,其中包含与我们的实时服务器上相同的 htaccess 文件。

在我的本地机器上,只需启用 apache 模块,然后在 public_html 目录的主 htaccess 文件中添加 htaccess 代码即可。我本地站点上的所有请求都显示包含“内容编码:gzip”的标题。

但是,当在我们的服务器上使用 https 时,gzip 编码似乎停止在 pub 目录。没有来自 pub 目录(pub/static 和 pub/media)的内容显示和 gzip 编码。我的本地机器和实时服务器上的文件是相同的。根据我的托管服务提供商的说法,他们启用了 gzipped,他们认为这与我的文件树中阻止 gzip 编码发生的 htaccess 文件之一有关。

我也做了一个我们的托管服务提供商推荐的小测试,并尝试在我的本地机器和实时服务器上的 public_html 目录中设置一个额外的目录来测试 gzip 编码是否可以工作。在我的本地机器上,我可以访问该目录并且其中的文件显示 gzip 压缩,但是在我的实时服务器上,当将文件添加到我的 public_html 目录并尝试通过浏览器访问它时,Magento 会抛出 404 错误!

有没有人知道为什么 gzip 不会穿过我的文件树并正确地 gzip 位于 pub 文件夹中的 js、缩小的 js、css 和缩小的 css 文件?

4

2 回答 2

0

非常奇怪的问题,pub/static 的 .htaccess 中包含放气模式

bat 不适用于所有文件类型,javascript 文件未添加到设置中

所以,只需编辑pub/static/.htaccess

并使用 start 编辑行 - AddOutputFilterByType DEFLATE

并添加内容类型 -

text/javascript application/javascript application/x-javascript application/json image/svg+xml

现在,所有静态内容都将使用 gzip。

奇怪,为什么错过了这个,也许是其他功能?

于 2019-02-15T08:19:24.890 回答
0

经过几天的调试,事实证明,在我的实时服务器上,Set-Encoding 的 RequestHeader 被剥离了。这在我的本地机器上的 Apache 设置上没有发生。我的网络主机仍然没有给我解释为什么会发生这种情况,我也不知道它是否与 pub/static 目录中的 htaccess 文件有关,但添加了下面的 RequestHeader 集:

<IfModule mod_headers.c>
Header set X-UA-Compatible "IE=edge"
Header set Connection keep-alive
#THE LINE BELOW THIS COMMENT
RequestHeader set Accept-Encoding "gzip, deflate, br"  
<FilesMatch "\.(appcache|atom|bbaw|bmp|crx|css|cur|eot|f4[abpv]|flv|geojson|gif|htc|ico|jpe?g|js|json(ld)?|m4[av]|manifest|map|mp4|oex|og[agv]|opus|otf|pdf|png|rdf|rss|safariextz|svgz?|swf|topojson|tt[cf]|txt|vcard|vcf|vtt|webapp|web[mp]|webmanifest|woff2?|xloc|xml|xpi)$">
    Header unset X-UA-Compatible
</FilesMatch>

到我的 magento 站点根目录中的 htaccess 文件修复了压缩问题。

如果这是服务器问题,我希望有人在下面评论我可能会通过我的虚拟主机提出什么来解决这个问题。否则,我将向 Magento github 提交问题。

于 2018-09-25T22:12:29.593 回答