* Added cache to createindex_plain
This commit is contained in:
parent
a51bd49fbe
commit
882940a807
1 changed files with 36 additions and 6 deletions
|
@ -34,6 +34,9 @@ local tree = {nodes={}}
|
||||||
-- Index table
|
-- Index table
|
||||||
local index = {}
|
local index = {}
|
||||||
|
|
||||||
|
-- Indexdump
|
||||||
|
local indexcache = "/tmp/.luciindex"
|
||||||
|
|
||||||
-- Global request object
|
-- Global request object
|
||||||
request = {}
|
request = {}
|
||||||
|
|
||||||
|
@ -173,17 +176,44 @@ end
|
||||||
|
|
||||||
-- Calls the index function of all available controllers
|
-- Calls the index function of all available controllers
|
||||||
function createindex_plain(path, suffix)
|
function createindex_plain(path, suffix)
|
||||||
|
local cachetime = nil
|
||||||
|
|
||||||
local controllers = luci.util.combine(
|
local controllers = luci.util.combine(
|
||||||
luci.fs.glob(path .. "*" .. suffix) or {},
|
luci.fs.glob(path .. "*" .. suffix) or {},
|
||||||
luci.fs.glob(path .. "*/*" .. suffix) or {}
|
luci.fs.glob(path .. "*/*" .. suffix) or {}
|
||||||
)
|
)
|
||||||
|
|
||||||
|
if indexcache then
|
||||||
|
cachetime = luci.fs.mtime(indexcache)
|
||||||
|
|
||||||
|
if not cachetime then
|
||||||
|
luci.fs.mkdir(indexcache)
|
||||||
|
luci.fs.chmod(indexcache, "a=,u=rwx")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
for i,c in ipairs(controllers) do
|
if not cachetime or luci.fs.mtime(path) > cachetime then
|
||||||
c = "luci.controller." .. c:sub(#path+1, #c-#suffix):gsub("/", ".")
|
for i,c in ipairs(controllers) do
|
||||||
stat, mod = pcall(require, c)
|
c = "luci.controller." .. c:sub(#path+1, #c-#suffix):gsub("/", ".")
|
||||||
|
stat, mod = pcall(require, c)
|
||||||
if stat and mod and type(mod.index) == "function" then
|
|
||||||
index[c] = mod.index
|
if stat and mod and type(mod.index) == "function" then
|
||||||
|
index[c] = mod.index
|
||||||
|
|
||||||
|
if indexcache then
|
||||||
|
luci.fs.writefile(indexcache .. "/" .. c, string.dump(mod.index))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if indexcache then
|
||||||
|
luci.fs.unlink(indexcache .. "/.index")
|
||||||
|
luci.fs.writefile(indexcache .. "/.index", "")
|
||||||
|
end
|
||||||
|
else
|
||||||
|
for i,c in ipairs(luci.fs.dir(indexcache)) do
|
||||||
|
if c:sub(1) ~= "." then
|
||||||
|
index[c] = loadfile(indexcache .. "/" .. c)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in a new issue