Carpe Diem

備忘録。https://github.com/jun06t

CloudFrontのキャッシュでハマった話

概要

ブラウザのキャッシュ - Carpe Diem
を検証している時に期待した挙動をしなくてハマったので、CloudFrontのキャッシュの動作と注意点をまとめます。

CloudFrontのキャッシュ動作

レスポンスヘッダのx-cacheを見ると以下の3つに区別できます。

x-cache CloudFrontのキャッシュ Originへのリクエス Originのレスポンス
Miss from cloudfront なし
or
あるがTTL切れでOriginに更新あり
あり 200でリソース返す
Hit from cloudfront あり なし なし
RefreshHit from cloudfront あるがTTL切れ あり 304でリソースは返さない

この中で注意なのはRefreshHit from cloudfrontです

続きを読む

ブラウザのキャッシュ

概要

Webフロントのパフォーマンス診断 - Carpe Diem
で指摘されたブラウザキャッシュの対応をするため調べてみました。

大きく分けて強いキャッシュ弱いキャッシュの2種類のキャッシュがあります。

強いキャッシュ

ブラウザ側でリソースを保持し、期限が切れるまでサーバにHTTPリクエストを発行しません
なので一度ブラウザにキャッシュされるとサーバ側からハンドリングすることができなくなります

これを設定する方法は

  • Cache-Controlヘッダー
  • Expiresヘッダー

の2つがあります。

続きを読む

Webフロントのパフォーマンス診断

概要

Webフロントのパフォーマンスをチェックする診断ツールの紹介です。
なんだかもっさりした挙動だけどどこから手を付けたら良いか分からない、といった時に問題点を洗い出すのに便利です。

Audits

Chrome DevToolsに標準で付いています。
ページを開いた状態でRunを押すと以下のように診断してくれます。

f:id:quoll00:20170623002538p:plain

続きを読む

GolangでBigQueryにデータを追加する

概要

GolangでのBigQueryの使い方です。
認証周りが以前と変わっており、JWTを使ってゴニョゴニョしてた部分をライブラリ側で吸収してくれるようになったのか使う側は簡単になりました。

環境

  • go 1.8.3

サービスアカウントキーの作成

API Console Credentials pageで以下のようにサービスアカウントキーを作成します。

f:id:quoll00:20170622010124p:plain

続きを読む

Golangのnilについて

概要

先日の golang.tokyo #6 - connpass で独自のエラー型でnilにハマった点に触れられていて、自分でもふわっとしか覚えてなかったのでまとめ。

覚えること

以下を覚えておけばとりあえず大丈夫です。

  • nilは型を持つ
  • interfaceの場合のみ、型もnilでないとxxx == nilはfalse

nilを扱う型は

  • pointer
  • function
  • map
  • slice
  • channel
  • interface

がありますが、注意するのはinterfaceのみで大丈夫です。

続きを読む

Docker Imageのバージョン管理について

概要

development, staging, productionといった環境に分けてdocker imageを利用する場合のバージョン管理について考えてみました。

環境

  • AWS ECS
  • AWS ECR
  • Docker 17.03.1

要件

今回対応する時に考慮した要件は以下。

  • gitのtagと連動
    • ただし最新のimageのTAGを確認する手間は省きたい
  • dev, stg, prd分けができる
    • ただしimageの差異は極力なくしたい
  • リリース後の切り戻しが容易
続きを読む

macOS Sierraでulimitを変更する方法

概要

SierraのPCに変更した際、.bash_profileを過去のPCから引き継いだところulimitのところで設定が変わっていたのでメモ。

デフォルトの確認

$ ulimit -a  
core file size          (blocks, -c) 0  
data seg size           (kbytes, -d) unlimited  
file size               (blocks, -f) unlimited  
max locked memory       (kbytes, -l) unlimited  
max memory size         (kbytes, -m) unlimited  
open files                      (-n) 256  
pipe size            (512 bytes, -p) 1  
stack size              (kbytes, -s) 8192  
cpu time               (seconds, -t) unlimited  
max user processes              (-u) 709  
virtual memory          (kbytes, -v) unlimited 

max open filesの上限は256max user processes709に制限されています。
このままだと少ないので、設定ファイルを追加して上限を上げます。

続きを読む