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
..
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-30 17:35:45 +01:00
2025-01-24 23:53:26 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2025-01-13 23:03:07 +01:00
2025-01-13 23:03:07 +01:00
2025-01-11 23:10:09 +01:00
2025-01-11 23:10:09 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2025-01-24 23:53:26 +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-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-29 09:23:52 +01:00
2025-01-27 14:53:33 +01:00
2024-11-30 17:35:45 +01:00
2025-01-21 11:34:06 -05: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-11 11:10:43 +01:00
2025-01-11 11:10:43 +01:00
2024-12-11 17:38:31 -07:00
2024-12-11 17:38:31 -07: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-12-25 14:57:22 +00:00
2024-12-18 19:22:44 +00:00
2024-11-15 14:49:20 +01:00
2024-12-06 18:09:53 +00:00
2024-12-06 18:09:53 +00:00
2024-12-10 14:54:19 +01:00
2024-11-15 14:49:20 +01:00
2025-01-29 09:30:18 +01:00
2025-01-29 09:30:18 +01:00
2025-01-21 11:34:06 -05:00
2024-11-15 14:49:20 +01:00
2025-01-21 11:34:06 -05:00
2024-11-15 14:49:20 +01:00
2025-01-21 11:34:06 -05:00
2024-11-26 14:50:27 +01:00
2025-01-05 16:19:19 +00:00
2025-01-21 11:34:06 -05:00
2024-11-18 20:20:57 +01:00
2024-12-25 14:57:22 +00:00
2024-12-26 19:10:44 +01:00
2024-12-26 19:10:44 +01:00
2024-11-15 14:49:20 +01:00
2024-12-25 14:57:22 +00:00
2025-01-16 23:22:48 +01:00
2024-12-26 19:10:44 +01:00
2024-12-26 19:10:44 +01:00
2025-01-21 11:34:06 -05:00
2025-01-24 23:53:26 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2025-01-12 00:35:58 +01:00
2025-01-12 00:35:58 +01:00
2024-11-30 16:47:14 +00:00
2024-11-30 16:47:14 +00:00
2025-01-29 09:30:18 +01:00
2025-01-29 09:30:18 +01:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00
2025-01-10 08:08:46 +00:00
2025-01-10 08:08:46 +00: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-11-15 14:49:20 +01:00
2025-01-04 20:32:35 +01:00
2025-01-21 11:34:06 -05: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-23 09:33:10 +01:00
2025-01-10 23:33:35 +01:00
2025-01-06 08:55:00 +00:00
2025-01-21 11:34:06 -05:00
2025-01-23 21:38:31 +01:00
2025-01-23 21:38:31 +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-21 11:34:06 -05:00
2024-12-27 12:27:03 +01:00
2025-01-10 08:08:46 +00:00
2025-01-10 08:08:46 +00:00
2025-01-21 11:34:06 -05:00
2024-11-15 14:49:20 +01:00
2024-11-15 14:49:20 +01:00