2015年03月Reading Notes

March 02, 2015

The Asset Pipeline

http://guides.rubyonrails.org/asset_pipeline.html

1
Asset Pipeline
对网站的静态资源进行预处理(合并、简化、压缩、预处理coffeescirpt sass等)。对于静态资源的处理,这里面提到的
1
Fingerprinting
来优化http 缓存可以借鉴下。

1
Fingerprinting
技术是在文件名中加上文件内容的标识,当文件内容改变时,文件名也改变。比如文件
1
global.css
加入md5的指纹后,文件名为
1
global-908e25f4bf641868d8683022a5b62f54.css
.

以前我们经常用

1
query string
中来标识版本,比如
1
main.js?1.4
/
1
main.js?v=1.4
.这种方式在某些CDN中有问题(有些CDN只识别文件名,新的版本文件会替换原版本的文件,在部署这个时间窗口会导致页面混乱)。

在使用浏览器缓存时,一般涉及到http header包括下面两种方案:

  1. 1
    Expires
    
    1
    Cache-Control: max-age
    
    (没有过期之前,完全不发送请求)
  2. 1
    Last-Modifed
    
    1
    ETag
    
    (内容协商,需要发一个请求,如果内容没有变化,响应304)

当方案2和

1
Fingerprinting
结合起来时,就比较完美了。对于现在很多开放CDN来讲,基本上都会用方案1,这是开源库名字里面的版本号就起着
1
Fingerprinting
的作用。也有用方案2的,估计是出于统计分析的目的。

对于静态资源的缓存,理想的组合是:

  1. 配置很长的本地缓存时间(善用
    1
    Expires
    
    1
    Cache-Control: max-age
    
    ),比如1年
  2. 通过
    1
    Fingerprinting
    
    控制缓存(静态资源文件改变,对应的html的资源引用url也改变)

一次技术问答

## 一次技术问答最近一年多都没有写博客了,技术上做了很多有意义的事情,也有一些经验上的积累,逐步沉淀到博客上。今天回答某公司的技术上的一些疑问,把问题和回答贴上来。逐步`养`自己的技术观。### 1. 如何做数据安全防范?还有哪些支付安全需要注意?数据安全防范主要分为两个...… Continue reading

2016年05月Reading Notes

Published on August 10, 2016

2016年05月Reading Notes

Published on June 19, 2016