0
Fork 0
mirror of https://github.com/penpot/penpot.git synced 2025-02-13 02:28:18 -05:00

🎉 Add thumbnail caching.

Avoid unnecesary rendering unchanged pages.
This commit is contained in:
Andrey Antukh 2021-03-05 17:31:26 +01:00
parent 9d7214702f
commit 146394f3ca
2 changed files with 14 additions and 6 deletions

View file

@ -166,7 +166,6 @@
(let [file (retrieve-file conn file-id)]
(get-in file [:data :pages-index id]))))
;; --- Query: Shared Library Files
(def ^:private sql:shared-files

View file

@ -45,13 +45,22 @@
(fn [error]
(reject error))))))))
(defonce cache (atom {}))
(defn render-page
[data ckey]
(let [prev (get @cache ckey)]
(if (= (:data prev) data)
(:result prev)
(let [elem (mf/element exports/page-svg #js {:data data :width "290" :height "150"})
result (rds/renderToStaticMarkup elem)]
(swap! cache assoc ckey {:data data :result result})
result))))
(defmethod impl/handler :thumbnails/generate
[{:keys [file-id page-id] :as message}]
(p/then
(request-page file-id page-id)
(fn [data]
(let [elem (mf/element exports/page-svg #js {:data data
:width "290"
:height "150"})]
{:svg (rds/renderToStaticMarkup elem)
:fonts @fonts/loaded}))))
{:svg (render-page data #{file-id page-id})
:fonts @fonts/loaded})))