String internment contexts and content reuse

John-Mark Bell jmb at netsurf-browser.org
Fri Sep 18 00:59:21 BST 2009


Hi,

The current way in which we manage string internment contexts means that
we cannot share stylesheets between documents. This introduces somewhat
unnecessary fetching and conversion of duplicate copies of a stylesheet
when browsing between pages on a site.

For example:

http://example.org/ uses /foo.css and /bar.css. It has a link
to /baz.html.
/baz.html also uses /foo.css and /bar.css.

The user navigates to http://example.org/. We fetch and render the page,
which gives us 3 contents: one for the HTML and one for each of the
stylesheets. The stylesheets are created using the string internment
context used by the HTML content.

The user clicks the link to /baz.html. We fetch and render the page,
which also gives us 3 contents: one for the HTML and one for each of the
stylesheets. The stylesheets are created using the string internment
context used by /baz.html.

It's obvious, therefore, that we're duplicating the contents for foo.css
and bar.css for the sole reason that the internment contexts are
different.

It would be good if we could design a solution that avoids the need for
these duplicate CSS contents, but doesn't result in one internment
context for the entire process. As an additional complication, scripting
and CSSOM will require that CSS contents are copy-on-write.

Does anyone have any bright ideas?


J.




More information about the netsurf-dev mailing list