etagsを利用するサービスで 304 が帰ってこなかったので
調べてみた。
【原因1】
curlの header オプションが間違っていた。
headerを指定するには以下の「CURLOPT_HTTPHEADER」を指定するが、
「CURLOPT_HEADER」を指定していた。
CURLOPT_HTTPHEADER ... headerを設定する
CURLOPT_HEADER ... headerを出力するかどうか
当然ながら CURLOPT_HEADER に If-None-Match を指定しても意味はない。
【原因2】
If-None-Match で指定する etags の文字列が間違っていた。
以下のように配列で指定していた。
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
array('If-None-Match: test_etags_1')
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
実際は以下のように設定する。
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
array('If-None-Match: "test_etags_1"')
-
-
-
-
-
-
-
-
- -
-
-
-
-
-
-
-
つまり、「"」でくくらないとダメ。
ということで、上記2点を修正したら正常に動作しました。