perf: cache hooks in client-side cache
This commit is contained in:
parent
e37219ef39
commit
b7ddd1df92
4 changed files with 11 additions and 9 deletions
|
|
@ -1592,16 +1592,18 @@ def get_hooks(
|
|||
:param app_name: Filter by app."""
|
||||
|
||||
if app_name:
|
||||
hooks = _dict(_load_app_hooks(app_name))
|
||||
hooks = _load_app_hooks(app_name)
|
||||
else:
|
||||
if conf.developer_mode:
|
||||
hooks = _dict(_load_app_hooks())
|
||||
hooks = _load_app_hooks()
|
||||
else:
|
||||
hooks = _dict(cache.get_value("app_hooks", _load_app_hooks))
|
||||
|
||||
hooks = client_cache.get_value("app_hooks")
|
||||
if hooks is None:
|
||||
hooks = _load_app_hooks()
|
||||
client_cache.set_value("app_hooks", hooks)
|
||||
if hook:
|
||||
return hooks.get(hook, ([] if default == "_KEEP_DEFAULT_LIST" else default))
|
||||
return hooks
|
||||
return _dict(hooks)
|
||||
|
||||
|
||||
def append_hook(target, key, value):
|
||||
|
|
|
|||
|
|
@ -26,7 +26,7 @@ class TestHooks(IntegrationTestCase):
|
|||
hooks.override_doctype_class = {"ToDo": ["frappe.tests.test_hooks.CustomToDo"]}
|
||||
|
||||
# Clear cache
|
||||
frappe.cache.delete_value("app_hooks")
|
||||
frappe.client_cache.delete_value("app_hooks")
|
||||
clear_controller_cache("ToDo")
|
||||
|
||||
todo = frappe.get_doc(doctype="ToDo", description="asdf")
|
||||
|
|
@ -53,7 +53,7 @@ class TestHooks(IntegrationTestCase):
|
|||
hooks.has_permission["*"] = wildcard_has_permission_hook
|
||||
|
||||
# Clear cache
|
||||
frappe.cache.delete_value("app_hooks")
|
||||
frappe.client_cache.delete_value("app_hooks")
|
||||
|
||||
# Init User and Address
|
||||
username = "test@example.com"
|
||||
|
|
|
|||
|
|
@ -80,4 +80,4 @@ def set_webform_hook(key, value):
|
|||
delattr(hooks, hook)
|
||||
|
||||
setattr(hooks, key, value)
|
||||
frappe.cache.delete_key("app_hooks")
|
||||
frappe.client_cache.delete_value("app_hooks")
|
||||
|
|
|
|||
|
|
@ -227,7 +227,7 @@ class TestWebsite(IntegrationTestCase):
|
|||
self.assertEqual(response.headers.get("Location"), "/test")
|
||||
|
||||
delattr(frappe.hooks, "website_redirects")
|
||||
frappe.cache.delete_key("app_hooks")
|
||||
frappe.client_cache.delete_value("app_hooks")
|
||||
|
||||
def test_custom_page_renderer(self):
|
||||
from frappe import get_hooks
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue