初回データ取得時
- WWWクラスを使ってデータを取得した時にresponseHeadersにサーバからのレスポンスヘッダが入ってくるので、
ETag
やLast-Modified
を保存しておく(キーは大文字になっている)
2回目以降
- 次回リクエスト時にリクエストヘッダに
ETag
やIf-Modified-Since
に与えてリクエストする
IEnumerator requestSomething(string url) { |
- 変更がなければステータスコードに
304 Not Modified
が返ってくるので、そうしたらローカルに保存しておいたデータを利用する
ステータスコードの取得
- サーバからのレスポンスが
304
かどうかを調べるには: - Unityエディタ上では
www.responseHeaders["STATUS"]
でステータスラインが得られるのだが、ビルドしてiOSやAndroidで動かした時に挙動が違って得られない- Androidだと
NULL
というキー?で入ってるのだが、iOSだとどこにもない
- Androidだと
Unity Issue Tracker - [WWW] [iOS] [Android] Status and other keys missing from WWW.responseHeaders on mobilewww.errorが空だったら200 OK
、そうじゃなかったら先頭3文字がステータスコードだとして整数に変換してしのぐStatus: Not Reproducible
、だとぅ?こちとら4.6.6p1
で再現済みじゃい
304
の場合はerror
が空で返ってくるので、上の方法ではダメだったwww.bytes.Length
が0なので、それで区別するしかない