Add caching + linter cleanup

Add simple caching mechanism. This should keep the js from being
rerendered for 300 seconds. Also I ran JSHint and PEP8 against the code
and did soem general cleanup