【问题标题】:Receiving truncated javascript from request从请求中接收截断的 javascript
【发布时间】:2013-01-25 16:12:52
【问题描述】:

我正在处理http://yourworldclocks.juplo.com/ 的页面。此页面加载一个/incl/tzs.js,其中定义了initNames(); 函数并在文档就绪时调用。 FireBug 说这个函数没有定义,但是在tzs.js.

当我查看请求时,它返回 465,6 KB,但服务器上的 tzs.js 是 701.82 KB。我没有看到其他错误消息。

我以前从未见过这个错误。我已经重置了提供商的帐户并重新加载了网站,但我仍然遇到同样的问题。有谁知道发生了什么?有任何想法吗?谢谢。

P.S.:该网站在 15 分钟前运行良好。

【问题讨论】:

  • 是否正在请求tzs.js
  • 如果传输使用压缩(deflate、gzip 等),Content-Length 标头的值与实际文件大小之间的差异可能会有所不同。您是否真的验证了加载 JS 的请求是否收到了整个文件内容?您是否正在检查控制台是否有任何错误,为什么加载 tzs.js?如果有,可能会导致后面的函数报告“未定义”。
  • 一切正常。
  • 在 Chrome 中完美运行。
  • 我有: 后跟 包含文档就绪调用。

标签: javascript html truncated


【解决方案1】:

重新启动 Firefox 使问题消失。不知道是什么原因造成的。

【讨论】:

    【解决方案2】:

    遇到了类似的行为,深挖发现这是 HTTP 标头的怪异之处。就我而言,我使用的是 nginx;不确定您在哪个服务器上。 问题是,为了为我的资源定义 gzip 压缩,我启用了如下压缩 # gzip settings gzip on; gzip_min_length 900; gzip_buffers 4 32k; gzip_types application/x-javascript text/xml text/css application/json; gzip_vary on; # gzip settings end

    这里重要的考虑因素是gzip_min_length 900; 这一行。 这指示 nginx 如果内容大小小于 900 字节,则不要压缩该资源。

    我的文件大小是 506 字节(小于 900),所以 nginx 没有压缩它。但是,它发送了资源的Content-Length,就好像它已经实际压缩了它(566 字节)。 (是的,压缩时资源大小实际上会增加。这是较小文件的预期结果,这就是为什么首先有一个gzip_min_length 指令)

    所以为了解决这个问题,我只是将gzip_min_length 的阈值降低到 100。现在 nginx 压缩文件(稍微膨胀到 566 字节),并发送正确的Content-Length 标头(566 字节)。

    希望这对某人有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-11-21
      • 1970-01-01
      • 2017-07-10
      • 1970-01-01
      • 1970-01-01
      • 2013-07-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多