mirror of
https://github.com/penpot/penpot.git
synced 2025-02-15 03:28:25 -05:00
🎉 Add thumbnail caching.
Avoid unnecesary rendering unchanged pages.
This commit is contained in:
parent
9d7214702f
commit
146394f3ca
2 changed files with 14 additions and 6 deletions
|
@ -166,7 +166,6 @@
|
||||||
(let [file (retrieve-file conn file-id)]
|
(let [file (retrieve-file conn file-id)]
|
||||||
(get-in file [:data :pages-index id]))))
|
(get-in file [:data :pages-index id]))))
|
||||||
|
|
||||||
|
|
||||||
;; --- Query: Shared Library Files
|
;; --- Query: Shared Library Files
|
||||||
|
|
||||||
(def ^:private sql:shared-files
|
(def ^:private sql:shared-files
|
||||||
|
|
|
@ -45,13 +45,22 @@
|
||||||
(fn [error]
|
(fn [error]
|
||||||
(reject 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
|
(defmethod impl/handler :thumbnails/generate
|
||||||
[{:keys [file-id page-id] :as message}]
|
[{:keys [file-id page-id] :as message}]
|
||||||
(p/then
|
(p/then
|
||||||
(request-page file-id page-id)
|
(request-page file-id page-id)
|
||||||
(fn [data]
|
(fn [data]
|
||||||
(let [elem (mf/element exports/page-svg #js {:data data
|
{:svg (render-page data #{file-id page-id})
|
||||||
:width "290"
|
:fonts @fonts/loaded})))
|
||||||
:height "150"})]
|
|
||||||
{:svg (rds/renderToStaticMarkup elem)
|
|
||||||
:fonts @fonts/loaded}))))
|
|
||||||
|
|
Loading…
Add table
Reference in a new issue