如果我们不支持 IE6,那么为 IE 压缩 Javascript 文件是否有意义?

2024-01-11

如果浏览器允许压缩,我正在使用 Django GZip 中间件 (django.middleware.gzip.GZipMiddleware) 来压缩内容。

如果浏览器是 Internet Explorer (MSIE) 并且内容是 Javascript 文件,则中间件不会对内容进行 gzip。我的理解是,中间件在这种情况下避免压缩,因为 IE6(没有补丁)存在 gzip 响应问题。

对于我们的网站,我们不支持 IE6,但支持 IE7 和 IE8。考虑到我们不支持 IE6,即使浏览器是 IE,我们最好还是对所有 javascript 文件进行 gzip 压缩吗?

如果是这样,压缩这些文件的最佳方法是什么?我们希望继续使用 Django 中间件模块进行 gzip。我们是否应该复制 gzip 中间件模块并编辑处理 IE 和 Javascript 的几行(这感觉就像我们违反了 DRY)?使用 Apache 进行 gzip 也是一种选择。


受 JS/CSS 上的 gzip 问题影响的 IE6 版本已不再普遍流通(即使在当时也是少数情况)。 Netscape 4 已经消失很久了。

为此我强烈推荐删除所有现有的用户代理嗅探 gzip 黑客攻击。将压缩的 HTML/JS/CSS 发送到所有请求它的浏览器(使用Accept-Encoding),根据标准 HTTP/1.1。

if "msie" in request.META.get('HTTP_USER_AGENT', '').lower():

哦亲爱的。即使按照 UA 嗅探的令人沮丧的标准来看,这也是一个非常糟糕的测试。没有检查它是否真的MSIE在字符串中的正确位置(而不是所有尾随位中的任何位置;很容易得到误报),并且它不检查SV1这是 gzip 测试的传统方式(因为 IE6SP2+ 版本不会受到该错误的影响),因此它会破坏压缩allIE 这只是不必要的。

也没有设置Vary: User-Agent,因此代理将缓存错误的版本。它设置Vary: Accept-Encoding不使用 IE 时Content-Encoding,所以它会打破IE缓存 https://web.archive.org/web/20160224221410/http://blogs.msdn.com:80/b/ieinternals/archive/2009/06/17/vary-header-prevents-caching-in-ie.aspx.

我们是否应该复制 gzip 中间件模块并编辑处理 IE 和 Javascript 的几行(这感觉就像我们违反了 DRY)?

你可以,也许可以将补丁提交给 Django。因为他们目前的方法在我看来根本就被打破了。

使用 Apache 进行 gzip 也是一种选择。

是的,如果你有 Apache 上游,一定要使用它(例如,使用mod_deflate)。如果您也可以使用它来提供脚本等静态文件,那么它是最有效的。 (尝试将 JS 保留在静态脚本中,而不是即时生成/模板化。)

Again, 不要使用上面提到的浏览器嗅探规则mod_deflate页。他们脆弱而丑陋,并且试图围绕过去十年中没有影响到任何人的 Netscape 问题进行编码。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如果我们不支持 IE6,那么为 IE 压缩 Javascript 文件是否有意义? 的相关文章

  • 如何在 mongodb-native findAndModify 中使用变量作为字段名称?

    在使用 mongodb native 驱动程序的这段代码中 我想增加在单独变量中指定的字段的值 问题在于 在这种情况下 inc 子句中的字段名称将是 变量 而不是变量的内容 在查询部分中 所选变量按预期工作并找到正确的 ID var sel
  • 使用自定义表单的 Django 内联表单集

    我正在使用内联表单集 我的型号 class Author models Model description models CharField max length 100 class Book models Model author mod
  • div 准备好后如何调用函数?

    我的 javascript 文件中有以下内容 var divId divIDer jQuery divId ready function createGrid Adds a grid to the html html 看起来像这样 div
  • 由表达式文字生成的正则表达式是否共享单个实例?

    以下代码片段 来自 Crockford 的Javascript 好的部分 演示了由正则表达式文字创建的 RegExp 对象共享单个实例 function make a matcher return a gi var x make a mat
  • 在 vuejs 上将 \n 替换为新行

    我正在尝试将 n 字符替换为来自端点的数据的新行 I tried p item licensedocument legal documentText replace r n r n g br p 并没有奏效 当我将replace 写入问题末
  • 如何在 Angular 中实现全局加载器

    我有一个全局加载器 其实现如下 核心模块 router events pipe filter x gt x instanceof NavigationStart subscribe gt loaderService show router
  • 动画和过渡的组合无法正常工作

    我一直在尝试添加一些基本的 CSS3 动画 目标是在按钮的单击事件上切换类 并根据添加的类对 div 进行动画处理 该代码对于 Firefox 中切换的第一次迭代完美运行 但对于 Chrome 等其他浏览器以及 Firefox 中的下一次迭
  • 为什么此 Firebase 可调用函数不返回值?

    我有一个应返回值的可调用函数 但唯一返回的是 null 以下是该功能的当前版本 我也尝试过回报第一个承诺 原来的once调用 最后在另一个then返回 GUID 在这种情况下它实际上返回了数据 但它立即返回并且 GUID 为空 我怎样才能实
  • 将 Django 的 FileField 设置为现有文件

    我在磁盘上有一个现有文件 例如 folder file txt 在 Django 中有一个 FileField 模型字段 当我做 instance field File file folder file txt instance save
  • 字段“id”期望一个数字,但得到“natsu”django

    我想创建一个 user posts 视图 其中包含与特定用户相关的所有帖子 假设有用户 Natsu 撰写的博客帖子 那么登录用户 Testuser 将能够查看所有帖子由该用户发布 即用户 Natsu 的所有帖子 blog models py
  • Opera Mobile 9.7 Beta 设置焦点 [重复]

    这个问题在这里已经有答案了 我们使用手持式扫描仪将物品移入和移出库存 扫描仪运行一个 ASP 页 该页提交表单以移动项目 我们最近购买了一台运行 Windows Mobile 6 1 的新扫描仪 很快就意识到 Mobile IE 完全没用
  • React Native v0.71.8 React-native-vector-icons 你看不到的图标

    我在用react native版本v0 71 8 我安装了react native vector icons库 但图标未显示 似乎链接在最新版本的 React Native 中不再起作用 所以我按照说明进行操作 但它不再编译 出现以下错误
  • 禁用 HTML 验证。如何为全局每个表单设置“novalidate”?

    我想知道是否可以做一些事情来禁用应用程序中每个表单的 HTML 验证 有什么办法可以做到这一点或者我应该添加novalidate每个表单标签的属性 看来唯一的方法是添加novalidate使用 JavaScript jQuery 为每个表单
  • 如何在 Django 中使用 UUID 自动填充预先存在的数据库条目

    我已将 UUID 添加到以下模型 class Post models Model uuid models UUIDField default uuid uuid4 editable False 但是数据库中已经有一些条目是在没有创建的情况下
  • 以编程方式在 Highcharts 中使用缩放绘制矩形和线条

    我正在使用 Highcharts 进行一些编程绘图Highcharts Renderer http api highcharts com highcharts Renderer using path and rect 在下面的代码中 我手动
  • 谷歌地图的灰度

    有没有什么方法可以在不丢失任何其他功能的情况下以灰度显示 Google 地图 通过 Javascript API 嵌入 是的 他们在 api V3 中引入了StyledMaps http code google com apis maps
  • Django Admin Media 前缀 URL 问题

    我有以下文件夹结构 src BAT templates admin base html src BAT media base css src BAT media admin media base css 设置 py MEDIA ROOT o
  • Tizen SDK:找不到变量:tizen

    我正在尝试使用 Tizen SDK 创建一个 Web 应用程序 当我启动应用程序时 一切都很好 但是当我在模拟器上按 后退 按钮时 没有任何反应 并且我看到一条消息 55435 js main js 9 ReferenceError 找不到
  • 构造函数可以返回什么值来避免返回 this ?

    确切的情况是什么 returnJavascript 中的语句可以返回除this当使用构造函数调用时new关键词 Example function Foo return something var foo new Foo 如果我没记错的话 如
  • 使用 ASP.Net 和 Ajax 的登录页面

    我正在尝试使用 html ajax 和 ASP NET 制作登录页面 数据确实传递给 ajax 函数 但是当我调试 asp 页面时 用户名和密码以 NULL 发送 该代码应该获取用户名和密码 然后返回用户 ID html页面 div Use

随机推荐

  • ArrayList中存储不同类型

    我想将元素存储在列表中 每个元素有4个参数 我正在尝试创建一个数组列表 为每个元素存储 4 个参数 它们是不同类型的 iD intx位置 浮动y 位置 浮动名称 字符串 I use ArrayList
  • SyntaxError:使用 jQuery.ajax() 的标签无效

    我正在尝试使用以下命令对我的服务器进行 Ajax 调用jQuery call ajax type GET dataType jsonp url http iceworld sls atl com api cmd time success f
  • Python 检查 gzip 存档的完整性

    Python 中有没有办法使用 gzip 或其他模块来检查 gzip 存档的完整性 基本上 Python 中是否有与以下内容等效的内容 gunzip t my archive gz 哎呀 第一个答案 现已删除 是误读问题的结果 我建议使用g
  • 什么是 IllegalStateException?

    我正在尝试使用遵循 Fastload API http developer teradata com doc connectivity jdbc reference current samp T20208JD java txt 连接 等都是
  • CasperJS并发请求

    假设我有一个网址数组 我不想使用打开功能 因为它会等待之前的每个 url 被加载 从而减少加载时间 casper each hrefs function self href self thenOpen href function self
  • Visual Studio 2008 上的 NuPack (NuGet)

    NuPack NuGet 可以安装在 Visual Studio 2008 上吗 不 它仅支持 VS 2010 From NuPack 常见问题解答 http nupack codeplex com wikipage title Frequ
  • 在 Mechanical Turk 中,如何限制每个工人只能获得 1 个 HIT

    我从与 Mechanical Turk 工人的交流中得知 有一种方法可以限制特定工人可以完成的 HIT 数量 但我不知道该怎么做 任何帮助将不胜感激 我开发了一个主要解决这个问题的脚本 主要思想是根据数据库检查工作人员 ID 然后如果工作人
  • Swift 中自定义 UICollectionViewCell 上的标签插座导致Optional.None崩溃

    我有一个 collectionViewController 我想显示一堆带有一些标签的自定义 UICollectionViewCells 不幸的是 每当我尝试访问自定义 UICollectionViewCell 的标签时 它都会导致崩溃 C
  • 使用 C# 从线路输入连续采样的最简单方法是什么

    我想使用 C 从 PC 的音频线路中连续采样 然后处理该数据 进行采样的最佳方法是什么 您可以使用开源进行一些 基本 音频捕获NAudio http www codeplex com naudio NET 音频库 查看 NAudioDemo
  • Tonumber 函数 (tonumber ‘(一二三) --> 123

    解决后如何拼写球拍中的数字 咒语编号 https stackoverflow com questions 22696615 how to spell a number in racket spellnum 22700116 noredire
  • 如何使用java将反斜杠替换为正斜杠?

    我正在将 CSV 文件导入 MySQL 数据库 这可以使用以下方法完成java mysql支持文件路径中的正斜杠 如果用户给出路径 c upload date csv sample csv MySQL 不支持这种类型的路径模式 我想在路径中
  • 发送 post 请求 python

    我有一个网站 我想检查它自上次检查 使用哈希 以来是否已更新 问题是我需要输入用户名和密码才能访问该网站 有没有办法使用python输入用户名和密码 查看requests http docs python requests org en l
  • Clojure 中的命名空间之间共享函数

    我很可能以错误的方式处理这个问题 所以请原谅我的天真 为了学习 Clojure 我开始将 Python 的 OAuth 客户端库移植到 Clojure 我通过包装 clj http 来做到这一点 就像我在 Python 库中包装 Pytho
  • 成功会话后获取 Stripe 处理费

    我们在应用程序中创建一个 Stripe 会话 如下所示 StripeConfiguration ApiKey ConfigurationManager AppSettings StripeKey var baseUrl Configurat
  • 重置必填字段 - jQuery

    我需要一些字段 具体取决于单击的按钮 但我所看到的行为并不是我所期望或希望的 当我单击其中一个按钮时 它会按照我的意愿设置必填字段 但是如果我单击另一个按钮 它不会由于某种原因重置它们 代码如下 感谢您的任何帮助 您可以提供 functio
  • 如何根据方面术语和情感来标记文本

    我已编码按术语方面标记文本数据 然后使用维德词典进行情感标记 但结果只是输出 1表示负 1表示正 其中应该有正 负 中性3类 这是代码 import pandas as pd from vaderSentiment vaderSentime
  • Android:如何解决服务中的 Google API 连接失败问题?

    here https developers google com android guides api client是官方指南提供的代码 而这是导致问题的代码片段 Override public void onConnectionFaile
  • 如何将自定义参数添加到Python日志格式化程序中?

    我正在使用带有 Flask 框架的标准 Python 日志记录模块 我想将日志写入文件 其中包含带有自定义参数 username s 的用户操作的所有记录到logging Formatter admin 2013 10 11 15 11 4
  • 在 XAML 中访问代码隐藏变量

    如何访问其中的公共变量示例 xaml cs类似 asp net 的文件 有几种方法可以做到这一点 将变量添加为代码隐藏中的资源 myWindow Resources Add myResourceKey myVariable 然后您可以从 X
  • 如果我们不支持 IE6,那么为 IE 压缩 Javascript 文件是否有意义?

    如果浏览器允许压缩 我正在使用 Django GZip 中间件 django middleware gzip GZipMiddleware 来压缩内容 如果浏览器是 Internet Explorer MSIE 并且内容是 Javascri