6 ms·
Okay quick thought exercise. HN doesn't use a react framework and is quite lightweight on clientside JavaScript. How many upvotes does it take using this system
by zeta0134 7y ago
Okay quick thought exercise. HN doesn't use a react framework and is quite lightweight on clientside JavaScript. How many upvotes does it take using this system before the total data size transmitted (original page + modifications) is, in sum total, larger than a fresh load of, say, Twitter?
The reality is that for the bulk of users, votes are an uncommon interaction; most of us are here to read the articles and view the comments. The additional complexity needed to make votes small has an upfront cost, and in this case, I feel the simplicity of the base interface is the better thing to optimize for, and HN's designers appear to agree. 10 kB for what is effectively a server-side page reload (which probably gracefully degrades for folks running NoScript) seems fine.
- novok 7y agoBut they're already using javascript, and the issue is the backend response, so this would only be a backend optimization then and doesn't require any fancy frameworks?
- pmarin 7y agoNo, It’s not needed. I have been using it without javascript for years.
- nindalf 7y agoYou aren’t understanding the person you’re replying to. No one is contesting that HN can work without JS. But for those who have JS enabled, it uses JS. For these people the optimisation could be implemented.
- manigandham 7y agoIt's nothing more than an extra header or query param to denote an AJAX request. Then the server can respond with an empty 200/204 status code instead of the entire HTML page. It's an hour of work and would actually save resources. None of this requires a front-end framework.
- xur17 7y agoYou'd need some frontend code to hide the upvote icon though.
- Deimorz 7y agoThat frontend code already exists and does that every time you vote (line 27 of https://news.ycombinator.com/hn.js https://news.ycombinator.com/hn.js). The response content isn't used for anything at all.
- zeta0134 7y agoNice! I hadn't actually looked at the code before writing my comment. That does seem relatively trivial, so I stand corrected. I didn't realize the clientside code was discarding the response; I sorta naively assumed it was doing a DOM replacement or something equally straightforward. What a pleasantly tiny script file. More site code should be this easy to read.
- samtheprogram 7y agoIf you have JavaScript disabled, the response content is used to hide the upvote sign.
- TeMPOraL 7y agoWe're talking here about something simple like: (if *ajax-request* (upvote) (upvote-and-generate-page))
- pmarin 7y agoHN works perfectly with javascript dissabled. It’s a feature
- IanCal 7y agoIt can still easily work with JavaScript disabled and implement the change.