From: Michael Tremer Date: Tue, 7 May 2019 09:56:17 +0000 (+0100) Subject: wiki: Store title of pages in memcache X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=50c8dc11fabcf11bf11440072d0ae90c15439b7e;p=ipfire.org.git wiki: Store title of pages in memcache This allows us to render pages a lot quicker Signed-off-by: Michael Tremer --- diff --git a/src/backend/wiki.py b/src/backend/wiki.py index a390ce37..b98dcd80 100644 --- a/src/backend/wiki.py +++ b/src/backend/wiki.py @@ -28,11 +28,23 @@ class Wiki(misc.Object): return Page(self.backend, res.id, data=res) def get_page_title(self, page, default=None): + # Try to retrieve title from cache + title = self.memcache.get("wiki:title:%s" % page) + if title: + return title + + # If the title has not been in the cache, we will + # have to look it up doc = self.get_page(page) if doc: - return doc.title + title = doc.title + else: + title = os.path.basename(page) - return default or os.path.basename(page) + # Save in cache for forever + self.memcache.set("wiki:title:%s" % page, title) + + return title def get_page(self, page, revision=None): page = Page.sanitise_page_name(page) @@ -67,6 +79,9 @@ class Wiki(misc.Object): page = self._get_page("INSERT INTO wiki(page, author_uid, markdown, changes, address) \ VALUES(%s, %s, %s, %s, %s) RETURNING *", page, author.uid, content or None, changes, address) + # Update cache + self.memcache.set("wiki:title:%s" % page.path, page.title) + # Send email to all watchers page._send_watcher_emails(excludes=[author])