2017-03-28 bouzuya/mr-jums で rev-hash を使う
bouzuya/mr-jums で rev-hash を使うようにした。 2017-03-10 や 2017-03-22 に関連することを書いている。
rev-hash は 1 行で書けそうな npm package だ。 md5 で hash をとり、その hex の先頭 10 文字をとるだけのものだ。
今回はビルドしたファイルの末尾につけるために使う。キャッシュが更新されないことへの対策だ。これくらいの用途なら、短期間ではおそらく衝突しないし、これで十分だろう。
静的コンテンツを Amazon S3 に配置し CloudFront 経由で配信する。Travis CI で静的コンテンツを build & bundle & deploy する。このときにいつも同じ名前だと CloudFront などでキャッシュが効いて更新されないかもしれない。そこで別の名前で配置する。静的コンテンツを指し示す側の動的コンテンツさえ変更すれば良い。
過去の静的コンテンツも削除しなければ、過去のデプロイに切り戻すことも容易だ。静的コンテンツといっても JavaScript や CSS なら、過去のものをすべて保存しても大した容量にはならない。
問題があるとすれば development (local) と production で環境が違ってしまうことだ。がんばればできそうだが source map などいろいろ問題が出そうなので、妥協している。 webpack への依存もできれば避けたい。環境の違いについては production の前に、同じ構成の別の環境をおいて、そこで検証しておけば大きな問題は避けられるだろう。
……というわけで bouzuya/mr-jums は rev-hash を使って hash をつけている。しばらくこれで様子を見る。