みーのぺーじ

みーが趣味でやっているPCやソフトウェアについて.Python, Javascript, Processing, Unityなど.

キャッシュは大事だけど難しい

ソフトウェア開発では,いろいろな関数を何回も実行してバグの修正や機能の改善を行っていきます.1回あたりのコストが高い処理がある場合,その結果をキャッシュすことで,開発がスムーズになります.そうして現実的な実行速度の中でソフトウェアの形が収まるようにします.

キャッシュを多用して開発したソフトウェアがいざ完成し,キャッシュをクリアして1から実行すると,とんでもなく時間がかかる場合があります.

キャッシュした結果が古くなっていると,適切な結果が得られなくなるのも注意が必要です.関数のキャッシュを行う場合は,入力が一致するかを確認するなどの工夫が必要です.

キャッシュで情報流出することもあります.

CDN切り替え作業における、Web版メルカリの個人情報流出の原因につきまして - Mercari Engineering Blog

Web版のメルカリにおいて一部のお客さまの個人情報が他者から閲覧できる状態になっていたことが判明しました。(中略) お客さまがWeb版メルカリに対してアクセスを行い、メルカリのサーバがレスポンスを構築している途中で、別のお客さまから同じURLに対してリクエストがあった場合、レスポンスがまとめられ、最初のお客さまの情報がふくまれたコンテンツが別のお客さまへ配信される事態に至りました。

キャッシュは便利ですが,正しい処理を行わないと意図しない結果になることがあります.