diff --git a/plugins/fasd/fasd.plugin.zsh b/plugins/fasd/fasd.plugin.zsh
index d42584f1a49b6236f2104fd8e54837e678a10a01..8ad43fc233012bfdd8978976e6d9d54db26e0381 100644
--- a/plugins/fasd/fasd.plugin.zsh
+++ b/plugins/fasd/fasd.plugin.zsh
@@ -1,5 +1,10 @@
 if [ $commands[fasd] ]; then # check if fasd is installed
-  eval "$(fasd --init auto)"
+  fasd_cache="$HOME/.fasd-init-cache"
+  if [ "$(command -v fasd)" -nt "$fasd_cache" -o ! -s "$fasd_cache" ]; then
+    fasd --init auto >| "$fasd_cache"
+  fi
+  source "$fasd_cache"
+  unset fasd_cache
   alias v='f -e vim'
   alias o='a -e open'
 fi