Q&A

LIFF経由で呼び出したAPIからのレスポンスがLINEキャッシュに保存されないようにしたい。

前提・実現したいこと

LIFF経由で呼び出すAPIからのレスポンスに含まれるユーザ情報が、クライアント側に保存されないようにしようとしています。

APIリクエストのHTTPヘッダに「'Cache-Control':'no-store, no-chache'」を設定していますが、 LINEキャッシュに何かしらの情報がキャッシュされているように見えます。

<知りたいこと> ①LINEキャッシュで何が保存されているのか知りたいです。 ②ユーザ情報が含まれる場合は、キャッシュをしないように設定したいです。

発生している問題・エラーメッセージ

該当のソースコード

試したこと

LINEのトーク画面からLIFF経由でAPIアクセスすると、LINEキャッシュありの方がレスポンスが早いです。 LINEのトーク画面から直接APIのURLにアクセスすると、LINEキャッシュ有無に関わらず早いです。 このことから少なくともLIFFのリダイレクト先の情報などがキャッシュされているように見えます。

補足情報(FW/ツールのバージョンなど)

  • 3
  • 2
  • 1703
  • twitter facebook

具体的にどのような API を呼び出そうとしているのでしょうか? LINEキャッシュというのは、LIFF の WebView のキャッシュのことであれば、一般的な WebView のキャッシュの仕組みとあまり変わらないと思います。

Cache-Control':'no-store, no-chache

Cache-Control':'no-store, no-cache が正しいと思います。

何もキャッシュさせたくないのであれば、クライアントのリクエスト時ではなく、サーバー側で Cache-Control をつける方が効果的だと思います。

  • 0

ご教示いただきありがとうございます!

大変お恥ずかしいのですが、スぺルミスでした。。 「'Cache-Control':'no-store, no-cache'」にしたら、キャッシュが効くようになりました。 ただし厳密に何もキャッシュされないわけではなく、やはり何かしらの情報はキャッシュされているようです。

 スペル修正前:1MB以上のキャッシュが作成される  スペル修正後:0.2KB程度、何かしらキャッシュが作成される。         (キャッシュ量が減ったので、no-cache自体は効いていそう。)

APIの概要としては、LIFFからAWSのAPIGateway経由でLambda(node.jsのExpressで実装)を実行し、htmlをレスポンスする処理となっています。それから、Cache-Control はAPIレスポンス(サーバ側)で設定しており、"APIリクエストで設定している"は誤りでした。失礼いたしました。

  • 0
本当によろしいですか? question.vm