Cache network room list queries.

This commit is contained in:
Erik Johnston 2016-12-16 16:11:43 +00:00
parent f5a4001bb1
commit b2f8642d3d

View File

@ -62,17 +62,18 @@ class RoomListHandler(BaseHandler):
appservice and network id to use an appservice specific one. appservice and network id to use an appservice specific one.
Setting to None returns all public rooms across all lists. Setting to None returns all public rooms across all lists.
""" """
if search_filter or (network_tuple and network_tuple.appservice_id is not None): if search_filter:
# We explicitly don't bother caching searches or requests for # We explicitly don't bother caching searches or requests for
# appservice specific lists. # appservice specific lists.
return self._get_public_room_list( return self._get_public_room_list(
limit, since_token, search_filter, network_tuple=network_tuple, limit, since_token, search_filter, network_tuple=network_tuple,
) )
result = self.response_cache.get((limit, since_token)) key = (limit, since_token, network_tuple)
result = self.response_cache.get(key)
if not result: if not result:
result = self.response_cache.set( result = self.response_cache.set(
(limit, since_token), key,
self._get_public_room_list( self._get_public_room_list(
limit, since_token, network_tuple=network_tuple limit, since_token, network_tuple=network_tuple
) )