diff --git a/.github/workflows/mdbook-deploy.yml b/.github/workflows/mdbook-deploy.yml
index 9a0cd26ecb6269ae33a4aa3f30e4f7c15664c45d..07768497c99c8ec2dd4f54ac69c3c87ee60166ed 100644
--- a/.github/workflows/mdbook-deploy.yml
+++ b/.github/workflows/mdbook-deploy.yml
@@ -32,20 +32,49 @@ jobs:
           sudo apt-get update -y
           sudo apt-get install -y wget default-jre default-jdk graphviz libssl-dev pkg-config
 
+      - name: Restore from cache
+        uses: actions/cache/restore@v3
+        id: cache-restore
+        with:
+          path: |
+            plantuml.jar
+            ~/.cargo/bin/
+            ~/.cargo/registry/index/
+            ~/.cargo/registry/cache/
+            ~/.cargo/git/db/
+          key: ${{ runner.os }}
+
       - name: Install mdBook
+        if: steps.cache-restore.outputs.cache-hit != 'true'
         run: |
           curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf -y | sh
           rustup update
           cargo install mdbook
           cargo install mdbook-plantuml
 
-      - name: Install PlantUML
+      - name: Download PlantUML
+        if: steps.cache-restore.outputs.cache-hit != 'true'
         run: |
           wget https://github.com/plantuml/plantuml/releases/download/v1.2022.13/plantuml-1.2022.13.jar -O plantuml.jar
-          echo "#!/bin/bash" > plantuml ; echo "java -jar $PWD/plantuml.jar \"\$1\" \"\$2\"" >> plantuml
+
+      - name: Install PlantUML
+        run: |
+          echo "#!/bin/bash" > plantuml ; echo "java -jar $PWD/plantuml.jar \"\$@\"" >> plantuml
           sudo mv plantuml /usr/bin/plantuml
           sudo chmod +x /usr/bin/plantuml
 
+      - name: Save PlantUML to cache
+        id: cache-save
+        uses: actions/cache/save@v3
+        with:
+          path: |
+            plantuml.jar
+            ~/.cargo/bin/
+            ~/.cargo/registry/index/
+            ~/.cargo/registry/cache/
+            ~/.cargo/git/db/
+          key: ${{ steps.cache-restore.outputs.cache-primary-key }}
+
       - name: Setup Pages
         id: pages
         uses: actions/configure-pages@v3