FJCT_ニフクラ mobile backend(mBaaS)お役立ちブログ

スマホアプリ開発にニフクラ mobile backend(mBaaS)。アプリ開発に役立つ情報をおとどけ!

ファイルストアのHTTPS公開機能がETagに対応しました

f:id:mbaasdevrel:20180418160022p:plain

2018年04月18日の機能追加で、ファイルストアのHTTPSファイル公開機能においてETagがサポートされました。ETagはいわばファイルのキャッシュ機能になります。

ETagのメリットはファイル表示の高速化になります。すでに一度表示した画像であれば、ブラウザのキャッシュを使って瞬時に表示されるようになります。

実例

まずは実際に試した例です。最初に読み込んだ時にはレスポンスステータスが200で、74.KBの画像を読み込んでいるのが分かります。

f:id:mbaasdevrel:20180418155852p:plain

これを再度読み込むと、レスポンスステータスが304になっています。ファイルは読み込んでいないのでデータのやり取りしたサイズも177Bとごくわずかになっています。

f:id:mbaasdevrel:20180418155904p:plain

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などについてもライブラリが対応していれば高速化されます。

ファイルストアの表示が高速化されるのはもちろん、表示にかかるネットワーク負荷も軽減されます。ぜひ今後もファイルストアを活用してください!

REST API リファレンス : 公開ファイル取得 | ニフクラ mobile backend

中津川 篤司

中津川 篤司

NCMBエヴァンジェリスト。プログラマ、エンジニアとしていくつかの企業で働き、28歳のときに独立。 2004年、まだ情報が少なかったオープンソースソフトの技術ブログ「MOONGIFT」を開設し、毎日情報を発信している。2013年に法人化、ビジネスとエンジニアを結ぶDXエージェンシー「DevRel」活動をスタート。