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