From aef2d2705309c0ddd09538c7c73a98ce3bda4346 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Dufays Date: Wed, 27 Apr 2022 08:39:37 +0000 Subject: [PATCH 1/2] [IMP] website: add X-Disable-Tracking header to improve tracking In this commit we add a request header X-Disable-Tracking that enables the client to ask the server not to track a request. This is useful for example when the client prefetches pages to be able to work offline. In that case, the prefetched pages must not be considered as viewed by the user. In such scenario and without such header, it is not possible to get an accurate page tracking. Task-2476513 Part-of: odoo/odoo#86031 --- addons/website/models/ir_http.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/addons/website/models/ir_http.py b/addons/website/models/ir_http.py index 187d416e157..157108214f6 100644 --- a/addons/website/models/ir_http.py +++ b/addons/website/models/ir_http.py @@ -133,7 +133,7 @@ class Http(models.AbstractModel): @classmethod def _register_website_track(cls, response): - if getattr(response, 'status_code', 0) != 200: + if getattr(response, 'status_code', 0) != 200 or request.httprequest.headers.get('X-Disable-Tracking') == '1': return False template = False From 80115e8dd3ff8171bbaa4db01347e0ec0fe298a8 Mon Sep 17 00:00:00 2001 From: Pierre-Yves Dufays Date: Tue, 8 Mar 2022 09:58:03 +0000 Subject: [PATCH 2/2] [IMP] website_event: improve web tracking In 2 ways: - by ignoring prefetched pages: indeed some page were reported inaccurately as being viewed by the user when they were only prefetched. - by adding the page /event in the tracked page as the page is obviously important in the event business Technical notes: - The prefetched pages are ignored thanks to an header X-Disable-Tracking added on each prefetch request in the service worker. - Adding the page /event as a tracked page has increased the number of queries when browsing the page /event. That's why some query count have been updated in TestOnlineEventPerformance. Task-2476513 Part-of: odoo/odoo#86031 --- addons/test_event_full/tests/test_performance.py | 4 ++-- .../website_event/views/event_templates_list.xml | 2 +- .../static/src/js/service_worker.js | 16 +++++++++++----- 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/addons/test_event_full/tests/test_performance.py b/addons/test_event_full/tests/test_performance.py index 71de9fa491a..082e4b01fca 100644 --- a/addons/test_event_full/tests/test_performance.py +++ b/addons/test_event_full/tests/test_performance.py @@ -444,7 +444,7 @@ class TestOnlineEventPerformance(EventPerformanceCase, UtilPerf): # website customer data with freeze_time(self.reference_now): self.authenticate('user_eventmanager', 'user_eventmanager') - with self.assertQueryCount(default=50): # tef only: 49 + with self.assertQueryCount(default=60): # com runbot: 59 - ent runbot:60 self._test_url_open('/event') @warmup @@ -452,7 +452,7 @@ class TestOnlineEventPerformance(EventPerformanceCase, UtilPerf): # website customer data with freeze_time(self.reference_now): self.authenticate(None, None) - with self.assertQueryCount(default=30): + with self.assertQueryCount(default=39): # com runbot: 39 - ent runbot: 39 self._test_url_open('/event') # @warmup diff --git a/addons/website_event/views/event_templates_list.xml b/addons/website_event/views/event_templates_list.xml index 9dae437d4d6..1f13e944257 100644 --- a/addons/website_event/views/event_templates_list.xml +++ b/addons/website_event/views/event_templates_list.xml @@ -2,7 +2,7 @@ -