【问题标题】:How can I make my .htaccess file allow Safari & other browsers to open GZIP?如何让我的 .htaccess 文件允许 Safari 和其他浏览器打开 GZIP?
【发布时间】:2010-11-17 18:27:22
【问题描述】:

我正在使用 .htaccess 文件来允许我的页面调用 gzip 后的 JavaScript 文件。

在 ie8 和 ff3 中运行良好,但脚本没有在 Safari(或 Chrome)中加载。

这是我正在使用的 .htaccess 文件:

<files *.js.gz>
ForceType text/javascript
Header set Content-Encoding: gzip
</files>

然后,例如,我可以从我的 HTML 页面调用 JS 文件:

<script src="foo.js.gz"></script>

如何修改上述 .htaccess 代码以使其适用于 Safari(并且仍然适用于其他浏览器)?

【问题讨论】:

    标签: javascript .htaccess safari gzip google-chrome


    【解决方案1】:

    我假设您正在尝试使用 Gzip 压缩来更快地下载资产和文本内容。这是加快网站速度的好方法。

    Safari、Chrome 和 IE6 都存在 Gzipped 下载问题。此外,Apache 会为您进行 gzip 压缩,无需手动 gzip 文件。试试这个 sn-p:

    # This uses mod_deflate, which is pretty standard on Apache 2.  Loading
    # mod_deflate looks like this:
    #
    #   LoadModule deflate_module modules/mod_deflate.so
    #
    AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/javascript text/css application/x-javascript
    BrowserMatch ^Mozilla/4 gzip-only-text/html
    BrowserMatch ^Mozilla/4\.0[678] no-gzip
    BrowserMatch \\bMSIE !no-gzip !gzip-only-text/html
    

    这应该在所有文本从 Apache 发出之前安全地 gzip,并且仅适用于支持它的浏览器。您可以正常链接到 JavaScript 和其他资产,只需 myscript.js,无需在磁盘上进行 gz 扩展或压缩。

    【讨论】:

    • 感谢您的信息。但是...我无权访问 apache。这就是我使用 htaccess 文件的原因。您知道如何更改 htaccess 文件以让 Safari 读取我的 gzip 文件吗?
    • htaccess 是一个 Apache 配置文件。如上所述,Safari 不会读取压缩文件。解决方案是为 Safari、Chrome 和 IE6 提供纯文件,但为其他浏览器提供 gzip 压缩的内容。您可能仍然可以使用我在上面删除的语法,这将取决于 Apache 服务器的配置方式。在走得太远之前,请使用 firebug 或 YSlow 确保服务器尚未为您压缩内容。
    • 感谢您的课程。但是...我只有一个 gzipped 文件要添加到站点。我想避免修改/破坏 apache 配置文件......所以,我作弊了。我使用了 PPK 的浏览器检测脚本。如果浏览器是 Safari,我会动态加载非 gzip 压缩的 js 文件。否则,我动态加载 gzip 后的版本 使用 document.createElement("script") 来动态加载脚本。
    • 我看不到您的配置将阻止 gzip 在 chrome 浏览器中发生...
    猜你喜欢
    • 2020-06-16
    • 2012-06-25
    • 1970-01-01
    • 2018-08-24
    • 2013-03-09
    • 2021-05-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-23
    相关资源
    最近更新 更多