2月 202010
携帯コンテンツを作っているとドコモ・AU・ソフトバンクで表示可能サイズが違うため
同じURLで別々のコンテンツを出したいことが多々あります
それでもURLは同じなので単純にキャッシュしてしまうと同じコンテンツを返してしまいます
もちろん携帯に限った話ではなくてPCのブラウザのタイプによって・・・とかいろいろありますね
じゃぁどうすりゃいいのってことで解決方法です
sub vcl_hash{ set req.hash += req.url; if (req.http.host) { set req.hash += req.http.host; } else { set req.hash += server.ip; } if (req.http.x-carrier-id){ set req.hash += req.http.x-carrier-id; }else{ set req.hash += "other"; } }
vcl_hashを使うとキャッシュするときのhashを設定できるのでこれを使います
HTTP_X_CARRIER_IDにとりあえず種別が入ってると仮定します
(自分は上位のNginx側でドコモのIP帯域とかでフラグたててます)
req.hashの末尾に付与することで同一URLでも複数のキャッシュを使うことができます
まぁコネタですね