Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

CodeFrame does not cache p5 library in service worker or browser cache on Chromium #213

Open
stalgiag opened this issue Apr 22, 2024 · 1 comment

Comments

@stalgiag
Copy link
Collaborator

stalgiag commented Apr 22, 2024

Chromium browsers do not cache the p5 library used for examples. This is a limitation on the use of iframes with a srcdoc attribute on Chromium as documented here. As a result, pages like the arc() reference download the p5 library for each example. This happens regardless of service worker scope, origin, etc as far as I can tell. This does not happen on Firefox or Safari.

Screenshot 2024-04-22 at 2 29 45 PM

Some solution using iframe and srcdoc may exist that I do not see but afaik there are two possible approaches from here:

  1. Generate HTML files to serve for the src attribute of the iframe ala _arc_reference_example_1.html. This is similar to what happens on the current p5 sites's example pages.
  2. Make the CodeFrame component use p5 instance mode to render the canvas directly into the body without an iframe/document wrapper. This is how the current p5.js site handles reference sketches.

I believe that 2 is cleaner but I am open to alternatives. I think that the equivalent code from the current p5 website is here.

Potentially useful links:

howard-e added a commit that referenced this issue Apr 23, 2024
…5.min.js.

Avoids requiring a cached version of script by passing the text content of the script directly to the iframe.
@stalgiag stalgiag reopened this Apr 23, 2024
@stalgiag
Copy link
Collaborator Author

stalgiag commented Apr 23, 2024

Mostly fixed but leaving it open as this is still an issue with embeds that asynchronously load their code assets (ie SketchEmbed). These are rare and the impact is small so this can be addressed in the future.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants