A way to cache the contents of the roam buffer?

@bradmont

Not, really but update the code then, I am giving you a more streamlined code block, replace the previous one with this

(defvar org-roam-buffer-last-node nil
  "Stores the last visited Org-roam node for delayed redisplay.")

(defun org-roam-buffer--scheduled-redisplay-h ()
  (and (get-buffer-window org-roam-buffer)
       (org-roam-buffer--scheduled-fn)))

(defun org-roam-buffer--scheduled-fn ()
  (when-let ((node (org-roam-node-at-point)))
    (unless (equal node org-roam-buffer-last-node)
      (setq org-roam-buffer-last-node node)
      (run-with-idle-timer 1 nil #'org-roam-buffer-persistent-redisplay))))

(defun org-roam-buffer--scheduled-persistent-cleanup-h ()
  (setq org-roam-buffer-last-node nil))

(advice-add 'org-roam-buffer--redisplay-h :override #'org-roam-buffer--scheduled-redisplay-h)
(advice-add 'org-roam-buffer--persistent-cleanup-h :after #'org-roam-buffer--scheduled-persistent-cleanup-h)