     #(possible-fn %)
     #(handler %)))
 
+(defn wrap-no-cache
+  "Add 'Cache-Control: no-cache' to responses.
+   This allows the client to cache the response, but
+   requires it to check with the server every time to make
+   sure that the response is still valid, before using
+   the locally cached file.
+
+   This avoids stale files being served because of overzealous
+   browser caching, while still speeding up load times by caching
+   files."
+  [handler]
+  (fn [req]
+    (some-> (handler req)
+      (update :headers assoc
+              "Cache-Control" "no-cache"))))
+
 (defn server
   "This is the server. It is complected and its OK. Its trying to be a basic devel server and
    also provides the figwheel websocket connection."

   [ring.util.response :refer [resource-response] :as response]
   [ring.util.mime-type :as mime]
   [ring.middleware.cors :as cors]
   [org.httpkit.server :refer [run-server with-channel on-close on-receive send! open?]]

   [com.stuartsierra.component :as component]))

     (handle-index            http-server-root)
     (handle-figwheel-websocket server-state)

     (wrap-no-cache)
     (not-modified/wrap-not-modified)
     ;; adding cors to support @font-face which has a strange cors error
     ;; super promiscuous please don't uses figwheel as a production server :)
     (cors/wrap-cors
