Just for entertainment... In 1995 or so, netscape server came with server side includes so you have your navigation come from a separate page. You'd put this in your html
<!--#include file="header.html"-->
and the header.html file would be just inlined into the page.
You could also write plugins for Netscape server in c to do whatever else you liked to the html page before serving it to the browser.
It was all blazingly fast, the compiled binary code was in memory and unix was doing a good job of keeping our frequent pages (out of about 30,000 in total) in memory too. We easily saturated our datacenter's networking with it. All with mid range for it's time but now hilariously puny server.
<!--#include file="header.html"-->
and the header.html file would be just inlined into the page.
You could also write plugins for Netscape server in c to do whatever else you liked to the html page before serving it to the browser.
It was all blazingly fast, the compiled binary code was in memory and unix was doing a good job of keeping our frequent pages (out of about 30,000 in total) in memory too. We easily saturated our datacenter's networking with it. All with mid range for it's time but now hilariously puny server.