LoginSignup
7
3

More than 3 years have passed since last update.

Chromeアプリのライトモード(データセーバー)有効による不具合について

Posted at

概要

2019年08月下旬に、不正操作等のエラーが頻発するお問い合わせが増えてきました。
調査により、Android版の Chromeアプリのライトモード(旧:データセーバー)を有効にしていると、不具合が発生することが判明しました。
ここでは、不具合の原因と、その対策を記しています。

不具合発生箇所の詳細

  • GETリクエスト で 情報の更新処理を行っている
  • リクエストが3秒以上かかる場合がある

ライトモード(データセーバー)について

ライトモードとは、Googleサーバーにて、画像の圧縮やCSSやJavaScriptの圧縮をすることで、データ通信量を少なくすることができるモードです。

ライトモード_仕組み.png

Chromeアプリの設定から「ライトモード」を有効にした上で、以下条件のいずれかを満たした場合に、ライトモードが有効になります。

■有効になる条件

  • 2G以下の通信速度でページを表示した
  • Googleサーバーがページを表示するのに、5秒以上かかると判断したページを表示した

不正操作エラーが頻発した理由

ライトモードが有効な場合、端末からの1回のGETリクエストに対して、サーバー側に3回リクエスト(うち、2回がGooleサーバーからのアクセス)が来ていたのが原因でした。

2回目以降のものが連打扱いとなり、不正操作エラーとなっていました。

なお、POSTリクエストの場合は、上記の問題は発生していませんでした。

ライトモード_GETでの挙動.png

対応策について

方法1: 処理時間がかる処理をGETリクエストで呼び出している箇所をPOSTリクエストに置き換える

※そもそもGETリクエストは、情報の更新に使うべきではないのでないことが望ましいですが…

方法2:リクエストにかかる時間を短くする

1リクエストあたりの時間が短ければ、「ライトモード」が機能しないので、処理時間が短くなるよう改善する

効果が見られなかったもの

HTMLに変換を許可しないメタタグを追加

変換はされなくなったものの、リクエスト数は変わりませんでした。

<meta http-equiv="Cache-Control" content="no-transform">

今後について

固有の環境に起因した問題かの切り分けが完全にはできていないので、引き続き調査を行っていきます。
また、不具合箇所を逐一直していくような、場当たり的な対応ではない対応方法についても、引き続き調査していきます。
本件について、ご存知な事があればぜひコメントから教えて頂きたいです。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3