Skip to content

Instantly share code, notes, and snippets.

@yusukemihara
Last active August 29, 2015 14:21
Show Gist options
  • Select an option

  • Save yusukemihara/96589475a03ef6361f0a to your computer and use it in GitHub Desktop.

Select an option

Save yusukemihara/96589475a03ef6361f0a to your computer and use it in GitHub Desktop.

クライアント・サーバ間の高速化-画面情報JSONの省略化

  • ginbeeではクライアント・サーバ間の通信にJSON形式を使用している。
  • 画面のウィジェットの各項目の値をJSONにしているが、各項目が空白文字列であることが多い。
    • 空白文字列や0などの値をデフォルト値として省略するとJSONのサイズを大幅に小さくできる。
      • 通信量が減るので高速化できる。
      • まだ実装してないので予想でしかありませんが100ms前後の高速化が期待できそう。
  • クライアント側で省略項目を認識してデフォルト値に展開しないといけない。
    • 今月中くらいはかかりそう。

K02(診療行為入力画面)の省略前(98474byte)

{"title":"","popup_summary":"","popup_body":"","popup_icon":"","popup_timeout":0,
"fixed2":{"PTNUM":{"textdata":""},"KANANAME":{"style":"","textdata":""},"NAME":{"style":"","textdata":""},"BIRTHDAY":{"textdata":""},"SEX":{"textdata":""},"RATE":{"textdata":""},"LASTYMD":{"textdata":""},"SYOSINYMD":{"textdata":""},"MISYUMONEY":{"textdata":""},"SRYYMD":{"textdata":""},"GOKEITEN":{"textdata":""},"NENREI":{"textdata":""},"ZAITENTOTAL":{"textdata":""},"INGAI":{"isactive":false,"label":""},"DOSELNUM":{"textdata":""},"TEISEI":{"isactive":false,"label":""},"HKNCOMBICOMB":{"HKNCOMBI":{"textdata":""},"count":0,"item":["","","","","","","","","","","","","","",""]},"CONTKBN":{"style":"","textdata":""},"MODE":{"textdata":""},"SRYKACOMB":{"SRYKA":{"textdata":""},"count":0,"item":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""]},"TABOOCOB":{"TABOO":{"textdata":""},"count":0,"item":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""]},"SYORIMEI":{"style":"","textdata":""},"scrolledwindow1":{"RRKLIST":{"count":0,"row":0,"rowattr":0,"item":[{"column1":"","column2":"","column3":"","column4":""},{"column1":"","column2":"","column3":"","column4":""},{"column1":"","column2":"","column3":"","column4":""},{"column1":"","column2":"","column3":"","column4":""},{"column1":"","column2":"","column3":"","column4":""},{"column1":"","column2":"","column3":"","column4":""},{"column1":"","column2":"","column3":"","column4":""},{"column1":"","column2":"","column3":"","column4":""}

... 以下略

省略後(4355byte ただしこれは全項目が空白の理想条件なので実際はもう少し多くなる。)

{"fixed2":{"INGAI":{"isactive":false},"TEISEI":{"isactive":false},"HKNCOMBICOMB":{"item":["","","","","","","","","","","","","","",""]},"SRYKACOMB":{"item":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""]},"TABOOCOB":{"item":["","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","",""]},"scrolledwindow1":{"RRKLIST":{"item":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}],"selectdata":[false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false,false]}},"scrolledwindow2":{"BYOMEILST":{"item":[{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}],"selectdata"

... 以下略

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment