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!
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