Merge pull request #9854 from scmmishra/better-cache-policy
refactor: Caching for document counts
This commit is contained in:
commit
106e4b7d78
4 changed files with 15 additions and 21 deletions
|
|
@ -587,6 +587,7 @@ def clear_cache(user=None, doctype=None):
|
|||
else: # everything
|
||||
from frappe import translate
|
||||
frappe.cache_manager.clear_user_cache()
|
||||
frappe.cache_manager.clear_domain_cache()
|
||||
translate.clear_cache()
|
||||
reset_metadata_version()
|
||||
local.cache = {}
|
||||
|
|
|
|||
|
|
@ -14,7 +14,8 @@ common_default_keys = ["__default", "__global"]
|
|||
global_cache_keys = ("app_hooks", "installed_apps",
|
||||
"app_modules", "module_app", "system_settings",
|
||||
'scheduler_events', 'time_zone', 'webhooks', 'active_domains',
|
||||
'active_modules', 'assignment_rule', 'server_script_map', 'wkhtmltopdf_version')
|
||||
'active_modules', 'assignment_rule', 'server_script_map', 'wkhtmltopdf_version',
|
||||
'domain_restricted_doctypes', 'domain_restricted_pages', 'information_schema:counts')
|
||||
|
||||
user_cache_keys = ("bootinfo", "user_recent", "roles", "user_doc", "lang",
|
||||
"defaults", "user_permissions", "home_page", "linked_with",
|
||||
|
|
@ -23,10 +24,6 @@ user_cache_keys = ("bootinfo", "user_recent", "roles", "user_doc", "lang",
|
|||
doctype_cache_keys = ("meta", "form_meta", "table_columns", "last_modified",
|
||||
"linked_doctypes", 'notifications', 'workflow' ,'energy_point_rule_map')
|
||||
|
||||
count_cache_blacklist = ["Version", "Tag", "ToDo", "List Filter", "Note Seen By", "Notification Log",
|
||||
"Document Follow", "Communication", "Email Queue", "Deleted Document", "File", "Email Queue Recipient"
|
||||
"Comment", "Has Role", "Attendance", "Route History"]
|
||||
|
||||
|
||||
def clear_user_cache(user=None):
|
||||
cache = frappe.cache()
|
||||
|
|
@ -46,6 +43,11 @@ def clear_user_cache(user=None):
|
|||
clear_defaults_cache()
|
||||
clear_global_cache()
|
||||
|
||||
def clear_domain_cache(user=None):
|
||||
cache = frappe.cache()
|
||||
domain_cache_keys = ('domain_restricted_doctypes', 'domain_restricted_pages')
|
||||
cache.delete_value(domain_cache_keys)
|
||||
|
||||
def clear_global_cache():
|
||||
from frappe.website.render import clear_cache as clear_website_cache
|
||||
|
||||
|
|
@ -121,7 +123,7 @@ def clear_doctype_map(doctype, name):
|
|||
cache_key = frappe.scrub(doctype) + '_map'
|
||||
frappe.cache().hdel(cache_key, name)
|
||||
|
||||
def build_table_count_cache(doc=None, method=None, *args, **kwargs):
|
||||
def build_table_count_cache():
|
||||
if (frappe.flags.in_patch
|
||||
or frappe.flags.in_install
|
||||
or frappe.flags.in_migrate
|
||||
|
|
@ -129,15 +131,6 @@ def build_table_count_cache(doc=None, method=None, *args, **kwargs):
|
|||
or frappe.flags.in_setup_wizard):
|
||||
return
|
||||
|
||||
if doc and isinstance(doc, Document):
|
||||
doctype = doc.doctype
|
||||
|
||||
if doc.meta.istable:
|
||||
return
|
||||
|
||||
if doctype in count_cache_blacklist:
|
||||
return
|
||||
|
||||
_cache = frappe.cache()
|
||||
data = frappe.db.multisql({
|
||||
"mariadb": """
|
||||
|
|
|
|||
|
|
@ -36,8 +36,8 @@ class Workspace:
|
|||
self.allowed_reports = get_allowed_reports()
|
||||
|
||||
self.table_counts = get_table_with_counts()
|
||||
self.restricted_doctypes = build_domain_restriced_doctype_cache()
|
||||
self.restricted_pages = build_domain_restriced_page_cache()
|
||||
self.restricted_doctypes = frappe.cache().get_value("domain_restricted_doctypes") or build_domain_restriced_doctype_cache()
|
||||
self.restricted_pages = frappe.cache().get_value("domain_restricted_pages") or build_domain_restriced_page_cache()
|
||||
|
||||
def get_page_for_user(self):
|
||||
filters = {
|
||||
|
|
|
|||
|
|
@ -138,13 +138,11 @@ doc_events = {
|
|||
],
|
||||
"on_trash": [
|
||||
"frappe.desk.notifications.clear_doctype_notifications",
|
||||
"frappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actions",
|
||||
"frappe.cache_manager.build_table_count_cache"
|
||||
"frappe.workflow.doctype.workflow_action.workflow_action.process_workflow_actions"
|
||||
],
|
||||
"on_change": [
|
||||
"frappe.social.doctype.energy_point_rule.energy_point_rule.process_energy_points"
|
||||
],
|
||||
"after_insert": "frappe.cache_manager.build_table_count_cache"
|
||||
]
|
||||
},
|
||||
"Event": {
|
||||
"after_insert": "frappe.integrations.doctype.google_calendar.google_calendar.insert_event_in_google_calendar",
|
||||
|
|
@ -156,9 +154,11 @@ doc_events = {
|
|||
"on_update": "frappe.integrations.doctype.google_contacts.google_contacts.update_contacts_to_google_contacts",
|
||||
},
|
||||
"DocType": {
|
||||
"after_insert": "frappe.cache_manager.build_domain_restriced_doctype_cache",
|
||||
"after_save": "frappe.cache_manager.build_domain_restriced_doctype_cache",
|
||||
},
|
||||
"Page": {
|
||||
"after_insert": "frappe.cache_manager.build_domain_restriced_page_cache",
|
||||
"after_save": "frappe.cache_manager.build_domain_restriced_page_cache",
|
||||
},
|
||||
"Event Update Log": {
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue