mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
* Minor updates to the min & max cache sizes (16 & 64MB). Mostly to satisfy my power-of-two OCD. * Purge broken on-disk cache files * Optimize free RAM computations * Start dropping LRU items when running low on memory before pre-rendring (hinting) pages in non-reflowable documents. * Make serialize dump the most recently *displayed* page, as the actual MRU item is the most recently *hinted* page, not the current one. * Use more accurate item size estimations across the whole codebase. TileCacheItem: * Drop lua-serialize in favor of Persist. KoptInterface: * Drop lua-serialize in favor of Persist. * Make KOPTContext caching actually work by ensuring its hash is stable.
23 lines
628 B
Lua
23 lines
628 B
Lua
--[[
|
|
Inheritable abstraction for cache items
|
|
--]]
|
|
|
|
local CacheItem = {
|
|
size = 128, -- some reasonable default for a small table.
|
|
}
|
|
--- NOTE: As far as size estimations go, the assumption is that a key, value pair should roughly take two words,
|
|
--- and the most common items we cache are Geom-like tables (i.e., 4 key-value pairs).
|
|
--- That's generally a low estimation, especially for larger tables, where memory allocation trickery may be happening.
|
|
|
|
function CacheItem:new(o)
|
|
o = o or {}
|
|
setmetatable(o, self)
|
|
self.__index = self
|
|
return o
|
|
end
|
|
|
|
function CacheItem:onFree()
|
|
end
|
|
|
|
return CacheItem
|