Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

If it's not for this page, then why are you loading it? Load it when the user goes to that other page.

That's the idea behind bundle splitting and whatnot. Don't send users code they don't need yet. Most of them are never going to get to the part of the page that does need that code.



Depending on what you are loading it may be more efficient to bundle everything in one file. If you are only loading a few kb per page, the overhead and extra time required for the network requests mean it's probably not worth splitting code.


Yep, I agree. Optimization is about tradeoffs :)

At my day job we use app splitting rather than page splitting. Instead of breaking our codebase into individual pages and loading only those files, it's broken into apps. So you might load too much stuff for what you're currently doing, but you're never loading code that's completely unrelated.

A downside to that is that if you hit all our apps in one browsing session, you might download some vendor libraries like 10 times. But it's unlikely that a real user would ever do that.


We do something similar, but common code is shared. Webpack has a feature called chunking which we use to put everything from node_modules into it's own bundle which is loaded across multiple apps. Then the app specific code is loaded on each page.

https://webpack.js.org/plugins/commons-chunk-plugin

It does result in code being loaded when it isn't always needed, but in our case most libraries are used in every app.


> you might download some vendor libraries like 10 times

That reminds me that I once found 3 versions of jquery (or perhaps jquery-ui, my memory fades) linked from the same page.

One was linked in the master (yes, this was webforms), one was being injected through a user control and the last was written into the page.

All three were all different versions so were all being downloaded. This came to light when a controls stopped working when one version was 'updated'.


> it may be more efficient

In many cases it may not. Remember that you have to fetch data anyway when loading a new page. You could load the new parts of the CSS on the same connection.


Especially over HTTP/2


Agreed. I often find the extra initial loading time is worth the improved user experience across the rest of the website once the bundles CSS file is cached.


Because now the entire thing is loaded into the browser cache and doesn't need loading at all across the entire site


Also you don't have the combinatorial explosion of making sure that the CSS for the new sidebar/footer/reusable element is available every time it appears in a page. It also simplifies debugging specificity issues a little (but shuffles the problem around a bit).




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: