開発者:ナレッジ:TLSを扱うことによるオーバーヘッド
TLSを使うことはメリットだけではありません。
あれだけ複雑な処理をするのですから、オーバーヘッドも発生します。
TLSのオーバーヘッド
TLSを使う時は、平文では必要のない暗号化や認証・時には証明書の検証などが発生します。
これらの処理は、通常のHTTP通信に比べて遅延を引き起こすのは当然なことです。
そのため、TLSを扱うことによってレスポンスが悪化するだけではなく、ただでさえ貧弱なサーバに負荷をかけることになります。
どうすればいいのか?
案1:サーバを強化する
まー、一番妥当でしょう。
ただし、費用もかかることなので、他の方法も考えておくべきです。
案2:いっそのこと、TLSを使わない
もちろん、これも一つの手です。
早くなるのは確かですが、代償にセキュリティが犠牲になります。
トレードオフとはいえ、失うものが大きいので、あくまで最終奥義として手元にとっておくことをオススメします。
注意
当たり前ですが、TLSを使わないと非暗号化通信になります。盗聴される可能性があることを理解しておいてください。
案3:キャッシュ戦略を見直す
現実的に無料でできる最善策な気がします。(そもそも論、サーバと通信させないことでTLSのオーバーヘッドを回避できるため)
静的なアセット(試験の問題画像など)は、原則として1回設定したら変わることはありません。
それならば、一度ブラウザが取得したタイミングでその画像をなるべく長期間キャッシュさせておくことも有効な手段です。
※ もしも、画像を変更しなければならない事態に陥ると非常に面倒なことになります。(ユーザにキャッシュをクリアしてもらうか、画像のURLを変更するまでその画像は差し替わりません。)
案4:CDNを利用する
CDNを利用すると、サーバの負荷軽減が期待できます。(クライアントが、都度都度サーバにアクセスせずに、CDNからアセットを取得するため)
Cloudflareは無料で使えるので、DNSの部分委譲が可能であるならば、導入して損はないでしょう。