mdBook
mdBook copied to clipboard
Local fallback for CDN hosted ressources
- [x] Font Awesome
- [x] Google Fonts (Open Sans) Edit: maybe not that important, other (similar) fonts will be used instead
- [x] JQuery
- [ ] MathJax
Are loaded from CDN's but should have a local fallback for offline use and for when the CDN is down.
MathJax seems like a lot of files, currently not easily embeddable into the binary (as far as I know)..
JQuery and Font Awesome where the most important ones. I will therefore remove this issue from 0.0.2 milestone. Leave it like this until a better solution is found.
FYI: MathJax CDN is shutting down. Might want to switch to CDNJS in the meantime.
It would be good to add an option to disable remote loading completely. We have all of this stuff in Debian and would ideally just point to the local files. At the moment we have to carry patches in rustc instead.
One primary benefit of loading this stuff locally, is that my ISP really doesn't need to know when I'm reading rust documentation. :/
@infinity0 You mean when you are reading the docs locally? Indeed the CDN thing is only an improvement when loading from a remote source. I am not sure how I could differentiate the two use cases though?
Perhaps it could read a mdbook.toml
file that lets you define alternate local URLs for these resources? Or, get them from an environment variable.
Do you want to deactivate the CDN completely everywhere?
Yeah, that would be nice. We have them available locally in various subdirectories of /usr/share/fonts
and /usr/share/javascript
, though I can't speak for other distros.
I have made a new issue #271. Feel free to comment there :)
Great, thanks!
Thanks for working on this issue!
Is there a setting that allows me to deactivate CDN usage? Can I host all dependencies in the build
folder?
I ran into an issue with a poor WiFi connection on the train the other day. The Rust Book was slow to load pages in what I thought was offline mode using rustup doc --book
. The cause was the need to load the Google fonts which I did not have cached. When they were downloaded things improved, but the experience before that was frustrating.
I don't know what the size of the font files is and I suspect they're too large to embed in a binary, but I think there's a way to write it so a default browser font is loaded first and the Google font gets used if it's eventually downloaded.
I had a very similar problem as @reillysiemens. I was in a situation where I didn't have any internet connectivity. I noticed the page was (roughly) blocked on resolving fonts.googleapis.com, so I added a link-local entry in my /etc/hosts for that domain (so the resolution completed, at least - then the fetch failed quickly). Would treating the fonts.googleapis.com resources in a similar way as the google_analytics be acceptable? With this, I mean can the font.googleapis.com resources be conditionally included using a similar conditional? I'm guessing the page is nicer/prettier when using the Google fonts, but they don't seem to be a requirement.
Just adding my vote for offline support. Hit this yesterday while on the train. I really like how the Rust docs are readable locally and often read them that way, but I hadn't tested this in a truly offline situation until now.
Would it be possible to add an option when generating that simply disables those external stylesheets so default fonts are used?
@oyvindln Fallback of font family is a standard strategy with CSS. So that seems unneeded.
Local fallback for MathJax added in #1918. Review, please.