node http-server not serving updated html files

wariofan1 picture wariofan1 · Jul 10, 2016 · Viewed 11.5k times · Source

I am building out a front-end web app with angular (mostly ui-router) and doing local development by serving the html files through node http-server. I have noticed that http-server isn't serving my static html files when I make updates, which is challenging to my local development.

I have http-server installed globally with npm install http-server -g and start it up by going to the root project folder and running http-server. It defaults to localhost:8080- the two ways that seem to work is changing the port number after each update or going through chrome incognito mode.

Is there a way to use http-server normally without having to change the port or using incognito mode?

If it is relevant, I am using MBP v. 10.11.3

Thank you!

Answer

Brad picture Brad · Jul 10, 2016

the two ways that seem to work is changing the port number after each update or going through chrome incognito mode.

Your problem is client-side caching. Incognito mode has its own data directory, independent from your normal browsing.

Fortunately, http-server provides a way for you to set the cache control headers.

-c Set cache time (in seconds) for cache-control max-age header, e.g. -c10 for 10 seconds (defaults to '3600'). To disable caching, use -c-1 (and possibly -p 8080 to force the server to clear the cache for that port; can be removed on subsequent runs).

It's listed in the documentation here: https://github.com/indexzero/http-server

You can read up on HTTP caching directives here: https://developers.google.com/web/fundamentals/performance/optimizing-content-efficiency/http-caching?hl=en