memori

Alternative facts

ngx_small_light を使って画像を最適化する

Cloudinary で f_auto とかすると、クライアントに応じてイメージのフォーマットを最適化してくれるんですね。具体的には、webp が使えるクライアントに対しては webp で配信してくれるんです。

それくらいなら、ngx_small_light ですぐ出来そうだなって思ってやってみたらすぐ出来た。便利だなあ...。

# 簡単に書くとこういう感じ
# (Nginx での変数連結とかまでここにはるとマジで行数がひどいことになるので)

map $http_accept $small_light_params {
    default   "dw=...";
    "~*webp"  "dw=...,of=webp";
}

server {
  listen 80;

  # ...

  location / {
    # 例えばこういう感じで
    add_header Vary Accept;
    proxy_pass http://127.0.0.1:8080/small_light($small_light_params)/image_path$uri;
  }
}