mirror of
https://github.com/servo/servo.git
synced 2025-09-30 08:39:16 +01:00
Reuse StylesheetContent
for inline style sheets with identical content (#38540)
For duplicate style sheets with identical content, `StylesheetContents` can be reused to avoid redundant parsing of the inline style sheets. Since duplicate stylesheets is a common case with web components, this change will significantly improve performance. Additionally, the cache hit rate of stylo's `CascadeDataCache` can now be significantly improved. When shared `StylesheetContents` is modified, copy-on-write will occur to avoid affecting other sharers. And then updates the references to `CssRule` or `PropertyDeclarationBlock` stored in the CSSOMs to ensure that modifications are made only on the new copy. Signed-off-by: sharpshooter_pt <ibluegalaxy_taoj@163.com>
This commit is contained in:
parent
f6b77f94e2
commit
6e6ef513a9
25 changed files with 711 additions and 125 deletions
|
@ -4021,7 +4021,7 @@ impl Document {
|
|||
debug_assert!(cssom_stylesheet.is_constructed());
|
||||
|
||||
let stylesheets = &mut *self.stylesheets.borrow_mut();
|
||||
let sheet = cssom_stylesheet.style_stylesheet_arc().clone();
|
||||
let sheet = cssom_stylesheet.style_stylesheet().clone();
|
||||
|
||||
let insertion_point = stylesheets
|
||||
.iter()
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue