-
Notifications
You must be signed in to change notification settings - Fork 113
診断キー一覧ファイル( list.json )の圧縮転送対応提案 #938
Comments
サーバー側で確認すべき事。
Azure CDN を使って居る物と認識していますので対応は可能だという認識ですが、実際に運用したことは無いので確認が確認が必要です。 |
クライアント実装。 HttpClient 生成時に Handler を指定する様に変更する。 cocoa/Covid19Radar/Covid19Radar/Services/HttpClientService.cs Lines 19 to 22 in 2a72949
Android 実装例 public HttpClient Create()
{
var handler = new AndroidClientHandler {
AutomaticDecompression = DecompressionMethods.Brotli | DecompressionMethods.Deflate | DecompressionMethods.GZip,
};
return new HttpClient();
} |
iOS では NSUrlSessionHandler を指定している限り、デフォルトで有効になっている模様。(要確認) |
HTTP の通信上は以下の二点で確認出来ます。
https://developer.mozilla.org/ja/docs/Web/HTTP/Headers/Accept-Encoding |
ありがとうございます。通信効率は上げていきたいですね。こちらサーバーやCDNも絡んでくる話なのでサーバーチームとも連携して実現可能性を探りたいと考えています。 直近、ぼくができるのはAndroid, iOSでAccept-Encodingを付けてリクエストして、サーバー(これは仮プログラムでも良いですね)が送出する圧縮データを透過的に取り扱えるかの確認です。スペック的には対応していることは確認して頂いていますが、ぼくの方でも手元で動かして「動くよ」ってレベルにしておきたいと思ってます。 |
実装コードは取り込まれたようですが、サーバーサイドの変更は対応バージョンのリリース後とかでしょうか。 |
ぼくの知る限りlist.jsonはAzure CDNで配信していますね。 https://docs.microsoft.com/ja-jp/azure/cdn/cdn-troubleshoot-compression ちなみに、今のままだと診断キーファイル(.zip)もさらに圧縮されることになりそうなので、無駄な圧縮をしないようにちゃんと手当しようねみたいな話を開発チームがしているのを聞きました(この件は後ほどIssueにする予定です)。 |
ドキュメントを読む限り Azure CDN で圧縮転送を行うには事前に設定が必要の様です( #938 (comment) )
MIME type 毎の圧縮・非圧縮の設定は可能だという認識です。 圧縮設定に関する Issue を建てられるのであれば、list.json の対応も含めた内容にして頂けると纏まりが良さそうですね。 |
サーバー側のリリースも完了して、ぼくの手元では圧縮されて配信されてくるのが確認できました。
診断キー.zipもそのまま(圧縮されたバイナリとして)ダウンロードしてみましたが、 こちらぼくの間違いでした。mac標準のArchive Utilityを使ったので、2重圧縮がかかっていても一気に展開してしまっていました。 |
|
実機で確認した所対応が確認出来ました。 余談ですが、.NET での指定にかかわらず、 iPhone 環境では Brotli も対応している様子。 |
iOSいいなぁ。 |
手元の環境でも確認出来ました。
|
あれ、 COCOA v2.0.1 (iOS) で対応が確認出来てしまったと言う事は iOS 環境では過去バージョンも含めて対応してる…… かも知れない。 |
なお、 zip ファイルへのアクセス時も content-encoding: gzip が設定されているので不要な圧縮が行われてしまっているように見えます。
|
こんな感じに。
|
はい。そこは認識していて開発チーム側で改善(設定変更)を予定しています。 |
Zip ファイルの再圧縮には #1036 で対応されるのかな。よく分かってないですが。 |
一応明日、開発チームの方に確認しますが、#1036 のDescription 「blob storage 書き込み時にcontent typeを指定する」 を見るに、現在list.json/診断キー.zipを生成してblobに書き込む時にContentTypeを設定していない。 なので、Azure CDN側ではMIMEに応じた圧縮を設定済でも、MIME自体が |
その機能リクエストは何らかの問題に関連しますか / Is your feature request related to a problem?
COCOA は一日数回程度、診断キーの一覧を取得し新たな診断キーが登録されていないかチェックしています。
主な利用状況がモバイル回線である事を考えると、この際の通信量を削減することが望ましいです。
list.json は毎回全部分をダウンロードした上での比較になっているため、それなりの効果が有るものと考えます。
解決策についてお書きください / Describe the solution you'd like
HTTP 通信路の圧縮機能を使うことで大幅な削減が期待出来ます。(一般的な gzip 圧縮で 1/10 程度 )
必要な対応内容は以下の2点。
圧縮に使うアルゴリズムは可能で有れば Brotli が高効率。互換性の為に GZip / Deflate も有効にしておく事がお勧めです。
あなたが考える代替案についてご説明ください / Describe alternatives you've considered
毎回一括ダウンロードしか出来ない点も不要な通信を発生させているので課題としてあげられる。
差分ダウンロードが可能な形に変更すると言う手段も考慮するのが望ましい。
その他 / Additional context
Internal IDs:
The text was updated successfully, but these errors were encountered: