小编Jo *_*iss的帖子

通过S3从Amazon CloudFront提供gzip CSS和JavaScript

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

因为Cloudfront最初并非设计为自定义源CDN,并且因为它不支持gzipping,所以到目前为止我一直使用它来托管我的所有图像,这些图像在我们的站点代码中由他们的Cloudfront cname引用,并且远远优化了-futures标题.

另一方面,CSS和javascript文件托管在我自己的服务器上,因为直到现在我的印象是他们无法从Cloudfront gzip服务,并且gzipping(大约75%)的收益超过了使用CDN(约50%):Amazon S3(以及Cloudfront)不支持使用浏览器发送的HTTP Accept-Encoding标头以标准方式提供gzip压缩内容,以表明它们支持gzip压缩,以及所以他们无法动态地使用Gzip和服务组件.

因此,直到现在,我仍然不得不在两种选择之间做出选择:

  1. 将所有资产移至Amazon CloudFront并忘记GZipping;

  2. 保持组件自托管并配置我们的服务器以检测传入请求并在适当时执行动态GZipping,这是我到目前为止所做的.

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

现在,似乎Amazon Cloudfront支持自定义源,并且如果您使用自定义源 [ 链接 ],现在可以使用标准HTTP Accept-Encoding方法来提供gzip压缩内容.

到目前为止,我还没有能够在我的服务器上实现新功能.我上面链接的博客文章,这是我发现的唯一一个详细说明变更的博客文章,似乎暗示你只能启用gzipping(条形图解决方法,我不想使用),如果你选择自定义来源,我宁愿不这样做:我发现在我的Cloudfront服务器上托管相应的文件更简单,并从那里链接到它们.尽管仔细阅读文档,但我不知道:

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

  • 如何配置css和javascript标头以确保它们是从Cloudfront gzip中提供的.

javascript css gzip amazon-s3 amazon-cloudfront

191
推荐指数
5
解决办法
8万
查看次数

Bash:无限睡眠(无限阻挡)

startx用来启动X来评估我的.xinitrc.在我的.xinitrc开始我的窗口管理器使用/usr/bin/mywm.现在,如果我杀了我的WM(为了测试其他一些WM),X也将因为.xinitrc脚本达到EOF而终止.所以我在最后添加了这个.xinitrc:

while true; do sleep 10000; done
Run Code Online (Sandbox Code Playgroud)

这样,如果我杀了我的WM,X就不会终止.现在我的问题是:如何进行无限次睡眠而不是循环睡眠?有没有一个命令有点像冻结脚本?

最好的祝福

linux bash sleep infinite

135
推荐指数
7
解决办法
7万
查看次数

签出旧的提交并保持主分支的头部?

目前切换到另一个git提交(在同一个分支上......实际上,在主分支上!),我正在执行命令

git checkout ea3d5ed039edd6d4a07cc41bd09eb58edd1f2b3a
Run Code Online (Sandbox Code Playgroud)

现在,每次我这样做,git告诉我,我现在有一个超然的头.我如何进行较早的提交仍然保持在同一分支上?

git version-control

85
推荐指数
4
解决办法
8万
查看次数

Chrome开发者工具:什么是Snippets支持?

从版本19开始,Chrome的Web Inspector具有称为"片段支持"的实验性功能.以下是如何激活它:

  1. 打开chrome:flags,启用"Developer Tools实验",重启.

  2. 打开Web Inspector(开发人员工具),点击右下角的设置齿轮图标,启用"Snippets support",重新启动.

    启用代码段支持

  3. 打开Scripts面板,单击左侧的"导航树"图标,找到一个空的Snippets选项卡.

    片段标签

我的问题是:我可以用它做什么?我怎样才能用片段填充这个?

javascript web-inspector google-chrome-devtools

76
推荐指数
4
解决办法
2万
查看次数

获取Go语言中的Unix时间戳(自纪元以来的当前时间,以秒为单位)

我有一些用Go编写的代码,我正在尝试更新以使用最新的每周构建.(它最后是在r60下建造的).现在一切都在工作,除了以下几点:

 if t, _, err := os.Time(); err == nil {
   port[5] = int32(t)
 }
Run Code Online (Sandbox Code Playgroud)

关于如何更新它以使用当前Go实现的任何建议?

unix timestamp go

72
推荐指数
3
解决办法
7万
查看次数

浅克隆ES6地图或集

你如何浅层克隆ES6 MapSet对象?

我想获得一个具有相同键和值的新Map或Set.

javascript ecmascript-6

72
推荐指数
3
解决办法
2万
查看次数

C++迭代器被认为有害吗?

在今天的Boost图书馆会议上,"现代C++设计"和Loki C++库的作者Andrei Alexandrescu发表了题为"Iterators Must Go"(视频,幻灯片)的演讲,讲述了为什么迭代器不好,他有一个更好的解决方案.

我试着阅读演示幻灯片,但我无法从中得到很多.

  1. 迭代器坏了吗?
  2. 他的替代品真的更好吗?
  3. C++实现者会接受他的想法吗?

c++ iterator language-design

47
推荐指数
2
解决办法
1万
查看次数

Rails:每个环境的初始化程序?

我希望我的一个初始化器(in config/initializers/)中的代码仅针对:development环境运行,但不是:test或者:production.最好的方法是什么?

把它粘贴到config/environments/test.rb看起来不干净,我不太喜欢在一个if Rails.env == 'development' do ... end语句中包装整个初始化文件.是否有一些规范的方法来做到这一点?

(背景:为了加快测试加载时间,我试图将Barista gem移动到:development我的组中Gemfile,但是config/initializers/barista_config.rb调用Barista.configure,所以现在它在测试(和生产)模式下会窒息.)

ruby-on-rails ruby-on-rails-3

43
推荐指数
1
解决办法
2万
查看次数

CoffeeScript中的理解对象[dict/hash comprehensions]

有没有办法从coffeescript的理解中返回一个对象?这样的东西,我可以表达这个:

form_values = () ->
  ret = {}
  ret[f.name] = f.value for f in $('input, textarea, select')
  return ret
Run Code Online (Sandbox Code Playgroud)

像这样:

form_values = () -> f.name, f.value for f in $('input, textarea, select')
Run Code Online (Sandbox Code Playgroud)

我想构造一个对象(不是一个对象数组).所以如果标记看起来像这样:

<form name=blah>
  <input type=text name=blah1 value=111 />
  <textarea name=blah2>222</textarea>
  <select name=blah3>
    <option value=333a>
    <option value=333b>
  </select>
</form>
Run Code Online (Sandbox Code Playgroud)

返回的对象将是这样的:

{
  blah1: '111',
  blah2: '222',
  blah3: ''
}
Run Code Online (Sandbox Code Playgroud)

coffeescript

43
推荐指数
4
解决办法
7721
查看次数

了解最简单的LLVM IR

我转换最简单的C代码

#include <stdio.h>

int main()
{
  return 0;
}
Run Code Online (Sandbox Code Playgroud)

到它的LLVM IR,使用

clang -emit-llvm -S hello.c 
Run Code Online (Sandbox Code Playgroud)

生成的IR是:

define i32 @main() #0 {
  %1 = alloca i32, align 4
  store i32 0, i32* %1
  ret i32 0
}
Run Code Online (Sandbox Code Playgroud)

但是,我不明白这个IR.(LLVM doc对初学者有帮助但不是那么多)

  1. 我们为什么这么做%1 = alloca i32, align 4?它在原始代码中对应什么?
  2. 同样的问题 store i32 0, i32* %1
  3. alloca是否意味着堆栈上的分配(而不是动态分配)?
  4. '对齐4'是什么意思?

syntax llvm

38
推荐指数
2
解决办法
1万
查看次数