JavaScript可以检测用户的浏览器是否支持gzip吗?

时间:2011-08-22 20:28:28

标签: javascript amazon-s3 gzip

我是否可以使用JavaScript来检测用户的浏览器是否支持gzip压缩内容(客户端,而不是node.js或类似内容)?

我试图支持以下边缘情况:
有很多可能的文件可以加载到特定的Web应用程序上,最好在应用程序运行时根据需要加载它们,而不是最初加载它们。我希望使用远期缓存过期日期从S3提供这些文件。自S3 does not support gzipping files to clients that support it以来,我想要托管每个文件的两个版本 - 一个正常,一个gzip,content-type设置为application/gzip。浏览器当然需要知道要请求的文件。如果JavaScript能够检测到浏览器是否支持gzip压缩内容,那么浏览器将能够请求正确的文件。

这可能吗?

2 个答案:

答案 0 :(得分:15)

Javascript不能,但您可以使用Javascript来检测浏览器是否支持gzip压缩内容。

我在上面评论过并且想要重新启动,无论如何你应该使用CloudFront,它可以使用gzip内容。如果您使用的是S3,那么为什么您不想使用CloudFront,以回答您的问题...

此博客文章完美地说明了如何检测浏览器是否支持Gzip。

http://blog.kenweiner.com/2009/08/serving-gzipped-javascript-files-from.html

以下是快速摘要:

  

1)创建一个小的gzip压缩文件gzipcheck.js.jgz,并使其在CloudFront中可用。该文件应包含一行代码:

gzipEnabled = true;
     

2)使用以下代码尝试加载和运行此文件。您可能希望在任何其他Javascript代码之前将其放在HTML HEAD部分中。

<script type="text/javascript" src="gzipcheck.js.jgz">
</script>
     

如果文件加载,它会设置一个标志gzipEnabled,指示浏览器是否支持gzip。

答案 1 :(得分:4)

好的Cloudfront不会自动gzip内容。直到亚马逊决定在S3和Cloudfront中进行自动gzip压缩时,必须使用以下解决方法。

  • 除了普通版本外,还要创建该文件的gzip压缩版本并在S3上传。如果文件名是style.css,则gzip压缩版本应命名为style.css.gz。
  • 使用key = Content-Encoding&amp;添加标题到文件value = gzip到文件。这是必需的,以便浏览器了解内容是使用gzip编码的。可以使用S3 api或流行的S3文件管理器工具(如Cloudberry,Bucket Explorer等)添加标题
  • 还为文件添加正确的Content-Type标头。例如,对于style.css,它应该是Content-Type:text / css。
  • 在网页中包含正常文件
  • 使用上面提到的javascript来检测浏览器是否支持gzip编码。如果找到true,则用style.css.gz
  • 替换文件名,例如style.css