projects
/
prosody.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
456a2c1
)
mod_http_files: Switch to use util.cache for cache
author
Kim Alvefur
<zash@zash.se>
Mon, 11 Jul 2016 10:17:59 +0000
(12:17 +0200)
committer
Kim Alvefur
<zash@zash.se>
Mon, 11 Jul 2016 10:17:59 +0000
(12:17 +0200)
plugins/mod_http_files.lua
patch
|
blob
|
history
diff --git
a/plugins/mod_http_files.lua
b/plugins/mod_http_files.lua
index 40f46c9cf8b9dc524f6c643731b1e2c5e9cf8a60..a710679b6a21d525381334fe190954dde1ce59f7 100644
(file)
--- a/
plugins/mod_http_files.lua
+++ b/
plugins/mod_http_files.lua
@@
-17,6
+17,7
@@
local build_path = require"socket.url".build_path;
local path_sep = package.config:sub(1,1);
local base_path = module:get_option_string("http_files_dir", module:get_option_string("http_path"));
local path_sep = package.config:sub(1,1);
local base_path = module:get_option_string("http_files_dir", module:get_option_string("http_path"));
+local cache_size = module:get_option_number("http_files_cache_size", 128);
local dir_indices = module:get_option("http_index_files", { "index.html", "index.htm" });
local directory_index = module:get_option_boolean("http_dir_listing");
local dir_indices = module:get_option("http_index_files", { "index.html", "index.htm" });
local directory_index = module:get_option_boolean("http_dir_listing");
@@
-81,7
+82,7
@@
function sanitize_path(path)
return "/"..table.concat(out, "/");
end
return "/"..table.concat(out, "/");
end
-local cache =
setmetatable({}, { __mode = "kv" }); -- Let the garbage collector have it if it wants to.
+local cache =
require "util.cache".new(cache_size);
function serve(opts)
if type(opts) ~= "table" then -- assume path string
function serve(opts)
if type(opts) ~= "table" then -- assume path string
@@
-119,7
+120,7
@@
function serve(opts)
return 304;
end
return 304;
end
- local data = cache
[orig_path]
;
+ local data = cache
:get(orig_path)
;
if data and data.etag == etag then
response_headers.content_type = data.content_type;
data = data.data;
if data and data.etag == etag then
response_headers.content_type = data.content_type;
data = data.data;
@@
-157,7
+158,7
@@
function serve(opts)
end
local ext = full_path:match("%.([^./]+)$");
local content_type = ext and mime_map[ext];
end
local ext = full_path:match("%.([^./]+)$");
local content_type = ext and mime_map[ext];
- cache
[orig_path] = { data = data; content_type = content_type; etag = etag }
;
+ cache
:set(orig_path, { data = data; content_type = content_type; etag = etag })
;
response_headers.content_type = content_type;
end
response_headers.content_type = content_type;
end