Aliaksandr Kalenik
d762d16938
LibWeb: Use invalidation sets for :has() invalidation
...
Prior to this change, we invalidated all elements in the document if it
used any selectors with :has(). This change aims to improve that by
applying a combination of techniques:
- Collect metadata for each element if it was matched against a selector
with :has() in the subject position. This is needed to invalidate all
elements that could be affected by selectors like `div:has(.a:empty)`
because they are not covered by the invalidation sets.
- Use invalidation sets to invalidate elements that are affected by
selectors with :has() in a non-subject position.
Selectors like `.a:has(.b) + .c` still cause whole-document invalidation
because invalidation sets cover only descendants, not siblings. As a
result, there is no performance improvement on github.com due to this
limitation. However, youtube.com and discord.com benefit from this
change.
2025-01-29 09:30:18 +01:00
..
2025-01-28 11:38:06 +00:00
2025-01-28 01:12:45 +01:00
2024-12-21 18:14:28 +01:00
2024-12-21 18:14:28 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-21 18:14:28 +01:00
2024-12-21 18:14:28 +01:00
2024-12-22 10:12:49 +01:00
2024-12-22 10:12:49 +01:00
2024-12-22 10:12:49 +01:00
2024-12-02 16:19:47 +00:00
2024-12-28 05:39:32 -08:00
2025-01-28 11:24:40 +00:00
2025-01-28 11:24:40 +00:00
2025-01-28 11:24:40 +00:00
2025-01-21 11:34:06 -05:00
2024-12-05 19:59:57 +01:00
2025-01-21 11:34:06 -05:00
2024-11-15 14:49:20 +01:00
2024-12-04 16:34:13 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-22 12:30:09 +01:00
2024-12-22 12:30:09 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2025-01-13 10:59:16 +00:00
2025-01-13 10:59:16 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2025-01-21 11:34:06 -05:00
2024-12-26 19:10:44 +01:00
2024-12-07 08:31:03 +00:00
2024-12-07 08:31:03 +00:00
2024-11-14 19:50:22 +01:00
2025-01-13 23:03:07 +01:00
2024-11-15 14:49:20 +01:00
2025-01-21 11:34:06 -05:00
2025-01-13 23:03:07 +01:00
2025-01-28 01:12:45 +01:00
2025-01-17 10:12:39 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2025-01-21 11:34:06 -05:00
2024-12-25 17:14:08 +01:00
2025-01-08 11:18:13 +00:00
2024-11-15 14:46:09 +01:00
2025-01-28 11:24:40 +00:00
2025-01-28 11:24:40 +00:00
2025-01-11 10:08:29 -05:00
2024-12-22 12:30:09 +01:00
2024-12-28 05:39:32 -08:00
2025-01-21 11:34:06 -05:00
2025-01-04 17:58:38 +00:00
2025-01-28 01:12:45 +01:00
2024-11-15 14:49:20 +01:00
2024-12-21 18:14:28 +01:00
2024-12-21 18:14:28 +01:00
2024-12-28 05:39:32 -08:00
2025-01-17 10:12:39 +01:00
2025-01-13 10:59:16 +00:00
2025-01-29 09:30:18 +01:00
2025-01-29 09:30:18 +01:00
2025-01-28 11:24:40 +00:00
2025-01-24 13:55:52 +01:00
2025-01-24 13:55:52 +01:00
2024-12-21 18:14:28 +01:00
2024-12-21 18:14:28 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-07 08:31:03 +00:00
2024-12-04 12:26:50 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-12-25 11:56:37 +01:00
2024-12-25 11:56:37 +01:00
2024-11-20 15:38:03 +01:00
2024-12-21 18:14:28 +01:00
2025-01-28 11:24:40 +00:00
2024-12-06 12:39:14 +00:00
2025-01-21 11:34:06 -05:00
2024-12-07 08:31:03 +00:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2024-11-26 18:44:26 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2025-01-04 20:32:35 +01:00
2025-01-04 20:32:35 +01:00
2025-01-29 09:30:18 +01:00
2025-01-29 09:30:18 +01:00
2024-12-04 11:30:44 +00:00
2024-12-04 11:30:44 +00:00
2024-12-21 18:14:28 +01:00
2024-12-21 18:14:28 +01:00
2025-01-29 09:30:18 +01:00
2025-01-28 18:55:42 +01:00
2025-01-28 01:12:45 +01:00
2025-01-29 09:30:18 +01:00
2025-01-25 10:16:21 +01:00
2024-12-22 12:30:09 +01:00
2025-01-13 23:03:07 +01:00
2024-11-15 14:49:20 +01:00
2024-11-23 18:44:38 +00:00
2025-01-08 11:18:13 +00:00
2025-01-08 11:18:13 +00:00
2024-12-21 18:14:28 +01:00
2024-12-21 18:14:28 +01:00
2024-12-25 17:14:08 +01:00
2024-12-25 17:14:08 +01:00
2024-12-25 17:14:08 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00