169. LRU - Chrome storage自動消去
シェアしよう
少し工夫が必要 - accepted / - tried
Chromeは必要に応じて、LRU algorithmを利用してデータを消去する。
こちらのYoutube 動画をご覧になってください、6:25 から 7:38までの間。
さー、近いロジックを持つLRUStorage
を実装してください。
- Chromeでの実装を再現する目的ではない
getData
とsetData
は呼ばれるたびに、'used'とするべき。- 時間の精度の問題で、classのconstructorに
getTimestamp
を二番目引数として受けられるようにしてください。
interface OriginData { origin: string lastUsed: number size: number persistent: boolean}interface LRUStorage { capacity: number // to use the data for origin // return size of the data or undefined if not exist getData(origin: string): OriginData | undefined // updating data for origin // return boolean to indicate success or failure // If the total size exceeds capacity, // Least Recently Used non-persistent origin data other than itself should be evicted. setData(origin: string, size: number): boolean // manually clear data for origin clearData(origin: string): void // change data for origin to be persistent // it only handles existing data not the data added later // persistent data cannot be evicted unless manually clear it makePersistent(origin: string): void }