Chrome 앱의 라이트 모드(데이터 세이버) 사용으로 인한 문제에 대해

개요



2019년 08월 하순에, 부정 조작등의 에러가 빈발하는 문의가 증가해 왔습니다.
설문 조사를 통해 Android 버전의 Chrome 앱에서 라이트 모드 (이전 : 데이터 세이버)를 사용하도록 설정하면 문제가 발생하는 것으로 나타났습니다.
여기에서는, 버그의 원인과, 그 대책을 기재하고 있습니다.

결함 발생 장소의 상세


  • GET 요청에서 정보를 업데이트하는 중입니다
  • 요청이 3초 이상 걸릴 수 있음

  • 라이트 모드(데이터 세이버)에 대해서



    라이트 모드란, Google 서버에서, 화상의 압축이나 CSS나 JavaScript의 압축을 하는 것으로, 데이터 통신량을 적게 할 수 있는 모드입니다.



    Chrome 앱 설정에서 '라이트 모드'를 사용 설정한 후 다음 조건 중 하나를 충족하면 라이트 모드가 사용 설정됩니다.

    ■ 유효한 조건


  • 2G 이하의 통신 속도로 페이지를 표시했습니다
  • Google 서버가 페이지를 표시하는 데 5 초 이상 걸린 것으로 판단한 페이지를 표시했습니다.

    잘못된 조작 오류가 자주 발생한 이유



    라이트 모드가 유효한 경우, 단말로부터의 1회의 GET 리퀘스트에 대해, 서버측에 3회 리퀘스트(그중, 2회가 Goole 서버로부터의 액세스)가 왔던 것이 원인이었습니다.

    2번째 이후의 것이 연타 취급이 되어, 부정 조작 에러가 되고 있었습니다.

    POST 요청의 경우 위의 문제는 발생하지 않았습니다.



    대응책에 대해서



    방법 1: 처리 시간이 오래 걸리는 처리를 GET 요청에서 호출하는 위치를 POST 요청으로 바꾸기



    ※ 원래 GET 리퀘스트는, 정보의 갱신에 사용하면 안 되는 것이 아닌 것이 바람직합니다만…

    방법 2: 요청에 걸리는 시간을 줄입니다.



    요청 당 시간이 짧으면 "라이트 모드"가 작동하지 않으므로 처리 시간이 짧아집니다.

    효과를 볼 수 없었던 것



    HTML로 변환을 허용하지 않는 메타태그 추가



    더 이상 변환되지 않지만 요청 수는 변경되지 않았습니다.
    <meta http-equiv="Cache-Control" content="no-transform">
    

    미래에 대해



    고유의 환경에 기인한 문제의 구분이 완전하게는 되어 있지 않으므로, 계속 조사를 실시해 갑니다.
    또, 결함 개소를 회복해 가는, 장당한 대응이 아닌 대응 방법에 대해서도, 계속해서 조사해 갑니다.
    본건에 대해, 아시는 것이 있으면 꼭 코멘트로부터 가르쳐 주셨으면 합니다.
  • 좋은 웹페이지 즐겨찾기