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でも複数のキャッシュを使うことができます

まぁコネタですね


 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください