perf: cache hooks in client-side cache

This commit is contained in:
Ankush Menat 2025-01-06 19:55:50 +05:30
parent e37219ef39
commit b7ddd1df92
4 changed files with 11 additions and 9 deletions

View file

@ -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):

View file

@ -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"

View file

@ -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")

View file

@ -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