Diff

mod_http_muc_log/mod_http_muc_log.lua @ 2685:cd5781ca782d

mod_http_muc_log: Remove caching
author Kim Alvefur <zash@zash.se>
date Thu, 13 Apr 2017 22:47:09 +0200
parent 2593:b61b0ff1c0f9
child 2763:a6d19aea9b73
line wrap: on
line diff
--- a/mod_http_muc_log/mod_http_muc_log.lua	Thu Apr 13 22:18:28 2017 +0200
+++ b/mod_http_muc_log/mod_http_muc_log.lua	Thu Apr 13 22:47:09 2017 +0200
@@ -2,9 +2,7 @@
 local datetime = require"util.datetime";
 local jid_split = require"util.jid".split;
 local nodeprep = require"util.encodings".stringprep.nodeprep;
-local uuid = require"util.uuid".generate;
 local it = require"util.iterators";
-local gettime = require"socket".gettime;
 local url = require"socket.url";
 local os_time, os_date = os.time, os.date;
 local render = require"util.interpolation".new("%b{}", require"util.stanza".xml_escape);
@@ -140,7 +138,10 @@
 					weeks[#weeks+1] = { days = days };
 					current_day = 1;
 				end
-				days[current_day], current_day = { wday = tmp.wday, day = i, href = days_t[i] and datetime.date(days_t[i]) }, current_day+1;
+				days[current_day] = {
+					wday = tmp.wday, day = i, href = days_t[i] and datetime.date(days_t[i])
+				};
+				current_day = current_day+1;
 			end
 		end
 		table.sort(year, sort_m);
@@ -277,56 +278,10 @@
 	});
 end
 
-local cache = setmetatable({}, {__mode = 'v'});
-
-local function with_cache(f)
-	return function (event, path)
-		local request, response = event.request, event.response;
-		local ckey = path or "";
-		local cached = cache[ckey];
-
-		if cached then
-			local etag = cached.etag;
-			local if_none_match = request.headers.if_none_match;
-			if etag == if_none_match then
-				module:log("debug", "Client cache hit");
-				return 304;
-			end
-			module:log("debug", "Server cache hit");
-			response.headers.etag = etag;
-			response.headers.content_type = "text/html; charset=utf-8";
-			return cached[1];
-		end
-
-		local start = gettime();
-		local rendered = f(event, path);
-		module:log("debug", "Rendering took %dms", math.floor( (gettime() - start) * 1000 + 0.5));
-
-		if type(rendered) == "string" then
-			local etag = uuid();
-			cached = { rendered, etag = etag, date = datetime.date() };
-			response.headers.etag = etag;
-			cache[ckey] = cached;
-		end
-
-		response.headers.content_type = "text/html; charset=utf-8";
-		return rendered;
-	end
-end
-
--- How is cache invalidation a hard problem? ;)
-module:hook("muc-broadcast-message", function (event)
-	local room = event.room;
-	local room_name = jid_split(room.jid);
-	local today = datetime.date();
-	cache[get_link(room_name)] = nil;
-	cache[get_link(room_name, today)] = nil;
-end);
-
 module:provides("http", {
 	route = {
 		["GET /"] = list_rooms;
-		["GET /*"] = with_cache(logs_page);
+		["GET /*"] = logs_page;
 	};
 });