2018年04月18日の機能追加で、ファイルストアのHTTPSファイル公開機能においてETagがサポートされました。ETagはいわばファイルのキャッシュ機能になります。
ETagのメリットはファイル表示の高速化になります。すでに一度表示した画像であれば、ブラウザのキャッシュを使って瞬時に表示されるようになります。
実例
まずは実際に試した例です。最初に読み込んだ時にはレスポンスステータスが200で、74.KBの画像を読み込んでいるのが分かります。
これを再度読み込むと、レスポンスステータスが304になっています。ファイルは読み込んでいないのでデータのやり取りしたサイズも177Bとごくわずかになっています。
ETagとは
ETagはURI単位でユニークなIDを生成し、その情報を使ってファイルが更新されているかどうかをチェックする技術です。ApacheやnginxなどのHTTPサーバに実装されています。
最初にリクエストした際にETagヘッダーが返ってきます。
ETag: W/"b56d9bdb7e680a97d80353f67aa91aff"
この時の W/"b56d9bdb7e680a97d80353f67aa91aff" がユニークなIDになります。
次にリクエストする際に、このヘッダーを使ってファイルにアクセスします。使うのは If-None-Match ヘッダーになります。
If-None-Match: W/"b56d9bdb7e680a97d80353f67aa91aff"
この結果、ファイルが更新されていなければ304が返ってきますのでWebブラウザはキャッシュからファイルを表示します。更新されている場合にはHTTPサーバからデータが返ってきます。
IDについて
なお、mBaaSで使われているハッシュ値はMD5で生成されているようです。つまり、この値(ハッシュ値)はコンテンツの内容によって変わります。
$ md5sum 1445825091210.jpg b56d9bdb7e680a97d80353f67aa91aff 1445825091210.jpg
ETag無効化について
ETagを使わないようにするのは簡単です。 If-None-Match ヘッダーを付けなければ、これまで通りの結果が得られます。
まとめ
ETagはWebブラウザに標準で組み込まれている機能なので、Monacaアプリなどを使っていれば自然と画像などの表示が高速化されるでしょう。iOS/Androidなどについてもライブラリが対応していれば高速化されます。
ファイルストアの表示が高速化されるのはもちろん、表示にかかるネットワーク負荷も軽減されます。ぜひ今後もファイルストアを活用してください!