Optimizing the storage implementation here may be easy, or it may be hard. We just don’t know yet, and there are a lot of implementation details to consider so that it works reasonably well for everyone and doesn’t add an undue amount of load to the server. Plus, this is not the priority at the moment; it will probably have to take place after the release of 0.19.
Given all that, and the fact that your case is a real outlier (the largest documentation.json in one dump I have is 360kb, and the vast majority are 25kb or smaller) the best way forward for you will be to make your docs smaller. I know this is not what you wanted to hear, but I don’t want you to be blocked either! Keep in mind that the documentation format in the upcoming release is more efficient, so you’ll have a little more overhead when that happens. So, let’s talk about concrete ways to do that without compromising your goals!
I want to start off by saying that I think these are excellent docs in general. Thank you for caring enough to take the time to write them. 
I don’t think educational and succinct are necessarily at odds, but self-standing and cross-referencing might be. Do you want to teach your students declarative visualization in general, or vega-lite specifically? Right now, these docs explain a little but then send the reader to the vega-lite docs for almost everything. It’s useful as a refresher, and very searchable, but as someone unfamiliar with the source material it already reads as a cross-reference to me.
I see a couple optimizations without changing the overall structure:
- Move most of the links in individual functions, especially those which are duplicated, under their section headers. For example:
For details see the [Vega-lite projection documentation](https://vega.github.io/vega-lite/docs/projection.html#properties). du says this is 4k per occurence. At 16 instances, removing these would save 64k. You’d regain a little bit of that by adding the headers, but you’d probably still see a net loss.
- Remove duplicate language. For example: “This is equivalent to the GeoJson geometry
multi-polygon type in the GeoJSON specification.” You can drop “in the GeoJSON specification” in these instances with no loss of information.
In terms of larger-scale optimizations, we still don’t want to make things worse! So, what would you think about moving some of your educational intent into separate guides? Docs like these must necessarily serve as a reference, and can’t always introduce concepts in the order that would work best for your students.