diff --git a/.gitignore b/.gitignore
index 00d509c7dd346df90159c740762259f40bce68b1..9e7a7a6dfa0e476ea85284069ace869602a82fe2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,4 +1,2 @@
 /plz-out
-
-# Please output directory
-plz-out
+/.plz-cache
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index 00461e0c75de60624684df55867c03f6c387415a..0621b736466a49d28c9d1c217afc61bd5e69fb7f 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,17 +2,15 @@ build:
   tags: [docker]
   image: busybox:glibc
   before_script:
-    - mkdir -p /usr/local/bin
-    - wget https://github.com/thought-machine/please/releases/download/v14.3.5/please_14.3.5_linux_amd64.tar.gz
-    - chmod +rx /usr/local/bin/*
+    - wget https://github.com/thought-machine/please/releases/download/v14.3.5/please_14.3.5_linux_amd64.tar.gz -O - | tar xz -C /bin --strip-components=1
   script:
-    - please build //theme
-    - cp -av plz-out/gen/reveal.js reveal.js
+    - please build :theme
+    - mv plz-out/gen/reveal.js reveal.js
   artifacts:
     name: reveal.js-$CI_COMMIT_REF_SLUG
     paths:
       - reveal.js/
   cache:
-    key: "$CI_COMMIT_REF_NAME"
+    key: "plz-cache-$CI_COMMIT_REF_SLUG"
     paths:
-      - plz-out
+      - .plz-cache
diff --git a/.plzconfig b/.plzconfig
index cc1feee2f9907b55825eab067d59416c43ce5f70..be09c56601be9bccbf5cdfe8bd1687287a9979c9 100644
--- a/.plzconfig
+++ b/.plzconfig
@@ -1,2 +1,5 @@
 [please]
 version = 14.3.5
+
+[cache]
+dir=.plz-cache