当前位置: 首页 > 面试题库 >

通过S3从Amazon CloudFront提供压缩的CSS和JavaScript

隗锐进
2023-03-14
问题内容

我一直在寻找使网站加载速度更快的方法,而我想探索的一种方法是更多地使用Cloudfront。

由于Cloudfront最初不是设计为自定义CDN的,并且因为它不支持gziping,所以到目前为止,我一直使用它来托管我的所有图像,这些图像在我的站点代码中由它们的Cloudfront
cname引用,并经过了优化-futures标头。

另一方面,CSS和javascript文件托管在我自己的服务器上,因为到目前为止,我一直无法从Cloudfront中获得CSS和javascript文件的印象,而获得gzip压缩(大约75%)的收益超过了使用CDN(约占50%):Amazon
S3(因此Cloudfront)不支持使用浏览器发送的HTTP Accept-
Encoding标头以标准方式提供压缩内容,以表明其支持gzip压缩,并且因此他们无法即时压缩和提供组件。

因此,直到现在,我的印象是,必须在两种选择之间进行选择:

  1. 将所有资产移至Amazon CloudFront,而不必担心GZipping;

  2. 保持组件自托管,并配置我们的服务器以检测传入的请求,并根据需要即时执行GZipping,这是我到目前为止选择的操作。

还有 变通办法来解决这个问题,但本质上这些 没有工作 。[ 链接 ]。

现在,Amazon Cloudfront似乎支持自定义来源,并且 如果您正在使用“自定义来源” link, 现在可以使用标准的HTTP Accept-Encoding方法来提供压缩后的内容

到目前为止,我还无法在服务器上实现新功能。我上面链接到的博客文章,这是我发现的唯一详细说明更改的文章,似乎暗示着,如果您选择自定义来源,则只能启用gziping(我不想使用的条形变通方法)。我宁愿不要:我发现将Coresponding的文件托管在Cloudfront服务器上并从那里链接到它们更简单。尽管仔细阅读了文档,但我不知道:

  • 新功能是否意味着文件应该 通过 自定义来源托管在我自己的域服务器 ,如果是,则什么代码设置可以实现此目的;

  • 如何配置css和javascript标头,以确保从Cloudfront压缩后提供它们。


问题答案:

更新: Amazon现在支持gzip压缩,因此不再需要。

原始答案:

答案是gzip CSS和JavaScript文件。是的,你没看错。

gzip -9 production.min.css

这将产生production.min.css.gz。删除.gz,将其上传到S3(或您使用的任何原始服务器),然后Content- Encoding将文件的标头明确设置为gzip

这不是即时的gzip压缩,但是您可以非常轻松地将其打包到构建/部署脚本中。优点是:

  1. 请求文件时,Apache不需要CPU来gzip内容。
  2. 这些文件以最高压缩级别压缩(假定为gzip -9)。
  3. 您正在从CDN提供文件。

假设您的CSS / JavaScript文件经过(a)缩小和(b)足够大,足以证明在用户计算机上进行解压缩所需的CPU,那么您可以在此处获得显着的性能提升。

请记住:如果您对CloudFront中缓存的文件进行更改,请确保在进行此类更改后使缓存无效。



 类似资料:
  • 问题内容: 我开始在Go中编写服务器端应用程序。我想使用Accept- Encoding请求标头来确定是否GZIP响应实体。我曾希望找到一种直接使用http.Serve或http.ServeFile方法执行此操作的方法。 这是一个很普遍的要求。我错过了什么还是我需要推出自己的解决方案? 问题答案: 目前尚无对gzip压缩HTTP响应的“开箱即用”支持。但是添加它非常简单。看一下 https://g

  • 本文向大家介绍Java调用echarts提供的地图压缩方法来压缩地图,包括了Java调用echarts提供的地图压缩方法来压缩地图的使用技巧和注意事项,需要的朋友参考一下 由于默认情况下的 GeoJSON 文件太大,ECharts 提供了方法可以压缩地图。 GeoJSON 介绍:http://geojson.org/ ECharts 提供了压缩算法,但是代码是 JavaScript 的,参考代码写

  • 压缩 CSS 文件需要使用到 optimize-css-assets-webpack-plugin插件 一、压缩 css 文件的核心配置 // webpack.config.js webpack的配置文件 // 路径: ./webpack.config.js //…… //引入optimize-css-assets-webpack-plugin插件 const OptimizeCssAssets

  • 请务必理解如下章节后阅读此章节: 安装 Node 和 gulp 使用 gulp 压缩 JS 访问论坛获取帮助 压缩 css 代码可降低 css 文件大小,提高页面打开速度。 我们接着将规律转换为 gulp 代码 规律 找到 css/ 目录下的所有 css 文件,压缩它们,将压缩后的文件存放在 dist/css/ 目录下。 gulp 代码 你可以 下载所有示例代码 或 在线查看代码 当熟悉 使用 g

  • 主要内容:压缩提交的步骤当您获取合并请求时,压缩是将所有提交合并为一个的一种方式。 压缩提交的步骤 步骤(1): 转到您的项目目录,使用命令检出名为的新分支: 标志表示新的分支名称。 步骤(2): 现在,创建一个包含两个提交的新文件,将该文件添加到工作目录,并将更改与提交消息一起存储到存储库中,如下所示: 然后,再次操作 - 步骤(3): 现在,使用以下命令将上述两个提交压缩到一个提交中: 这里,命令用于从一个分支集成到

  • 问题内容: 我知道这是一项容易的任务,但是更改代码后它停止工作,并且无法恢复!我实际上使用了两个函数来进行压缩和解压缩,尽管实际上它是“ jar”和“ unjar”,但这并没有太大的区别 任何帮助/建议吗? 创建JarFile时发生错误: 问题答案: 我不知道这是否是您的问题,但是通常最好在完成写入后关闭每个zip条目。 请参阅。 在显示的代码中,不会关闭邮政编码中的最后一个条目。您也不会显示关闭