我一直在寻找让我的网站加载更快的方法,我想探索的一种方法是更多地使用Cloudfront.
因为Cloudfront最初并非设计为自定义源CDN,并且因为它不支持gzipping,所以到目前为止我一直使用它来托管我的所有图像,这些图像在我们的站点代码中由他们的Cloudfront cname引用,并且远远优化了-futures标题.
另一方面,CSS和javascript文件托管在我自己的服务器上,因为直到现在我的印象是他们无法从Cloudfront gzip服务,并且gzipping(大约75%)的收益超过了使用CDN(约50%):Amazon S3(以及Cloudfront)不支持使用浏览器发送的HTTP Accept-Encoding标头以标准方式提供gzip压缩内容,以表明它们支持gzip压缩,以及所以他们无法动态地使用Gzip和服务组件.
因此,直到现在,我仍然不得不在两种选择之间做出选择:
将所有资产移至Amazon CloudFront并忘记GZipping;
保持组件自托管并配置我们的服务器以检测传入请求并在适当时执行动态GZipping,这是我到目前为止所做的.
还有人变通办法来解决这个问题,但本质上这些没有工作.[ 链接 ].
现在,似乎Amazon Cloudfront支持自定义源,并且如果您使用自定义源 [ 链接 ],现在可以使用标准HTTP Accept-Encoding方法来提供gzip压缩内容.
到目前为止,我还没有能够在我的服务器上实现新功能.我上面链接的博客文章,这是我发现的唯一一个详细说明变更的博客文章,似乎暗示你只能启用gzipping(条形图解决方法,我不想使用),如果你选择自定义来源,我宁愿不这样做:我发现在我的Cloudfront服务器上托管相应的文件更简单,并从那里链接到它们.尽管仔细阅读文档,但我不知道:
新功能是否意味着文件应该通过自定义源托管在我自己的域服务器上,如果是,那么代码设置将实现此目的;
如何配置css和javascript标头以确保它们是从Cloudfront gzip中提供的.
我刚刚在Chrome上尝试访问某些页面时发现了一种非常奇怪的行为.它会提示将它们下载为.gz文件而不是加载它们.
这仅适用于当前的Chrome和所有平台.
正确加载页面后,我可以在Inspector上看到这一点
Resource interpreted as Document but transferred with MIME type application/x-gzip:" https://confluence.example.com/display/engp/PR-1221 ".
我知道这些是由配置为使用gzip压缩的nginx服务器提供的,但这没有任何问题.
gzip on; # that's on nginx part
Run Code Online (Sandbox Code Playgroud)
我几乎可以肯定这是nginx配置有问题,但是什么?
是什么让这个问题更加有趣(而且很烦人)是,如果您从超链接复制URL并将其粘贴到浏览器,它将只是正确地打开页面.是的,这只发生在超链接上.
我试图在此找到有关chrome的错误报告,但我唯一能找到的是其他人确实报告了与reddit页面或类似问题相似的问题github.com.
Request URL:https://confluence.example.com/display/engp/PR-1221
Request Method:GET
Status Code:200 OK
Request Headersview source
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Charset:UTF-8,*;q=0.5
Accept-Encoding:gzip,deflate,sdch
Accept-Language:en-US,en;q=0.8
Connection:keep-alive
DNT:1
Host:example.com
Referer:https://example.com/browse/PR-1221
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22
Run Code Online (Sandbox Code Playgroud)
Response Headersview source Access-Control-Allow-Credentials:true Access-Control-Allow-Headers:DNT,X-Mx-ReqToken,Keep-Alive,User-Agent,X-Requested-With,If-Modified-Since,Cache-Control,Content-Type Access-Control-Allow-Methods:GET, POST, OPTIONS, HEAD Access-Control-Allow-Origin:* Baz:bah Cache-Control:no-cache, must-revalidate Connection:keep-alive Content-Encoding:gzip Content-Type:text/html;charset=UTF-8 Date:Mon, 04 …
我使用Webpack 服务器创建了一个角度通用应用程序。我使用“ compression-webpack-plugin ”来压缩我的 js/html 文件,以便我可以从服务器向浏览器提供它们。压缩文件是通过该插件正确创建的。
问题:
虽然浏览器显示它可以接受 gzip 或 deflate 文件(Accept-Encoding:gzip, deflate, sdch),但我的 webpack 服务器不会将 gzip 文件发送到浏览器。
如何配置 webpack 服务器,使其在浏览器调用时将 gzip 文件发送到浏览器?
TIA
我在 RabbitMQ 中有这样的代码:
byte[] rawBytes = serialize(trxEntities);
byte[] zipped = rawBytes;
if (shouldBeCompress) {
zipped = compressor.compress(rawBytes);
}
BasicProperties persistentBasic = MessageProperties.PERSISTENT_BASIC;
channel.basicPublish("", queueName, persistentBasic, zipped);
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,我的一些消息应该被压缩,而其他一些则不应该被压缩。
有什么方法可以设置任何属性来告诉消费者“嘿!这是一条压缩消息”?
附言。“ com.rabbitmq.client.AMQP.BasicProperties.BasicProperties(..., Map headers, ...) ”对我有帮助吗?我的意思是我可以在 BasicProperties.header 中设置任何参数吗?