diff --git a/test/README.md b/test/README.md
index f6a2ab06d..515f5dbc3 100644
--- a/test/README.md
+++ b/test/README.md
@@ -175,6 +175,29 @@ drenv cleanup
 
 This should not be needed.
 
+## Caching resources
+
+If you run the drenv tool with a flaky network you can improve
+reliability of starting the environment by caching resources.
+
+To cache resources for the `regional-dr.yaml` environment run:
+
+```
+drenv cache envs/regional-dr.yaml
+```
+
+The cache expires in 2 days. To refresh the cache daily, you can install
+a cron job to run `scripts/refresh-cache` daily as the user used to run
+the environment.
+
+See the `scripts/refresh-cache.crontab` for example user crontab.
+
+To clear the cached resources run:
+
+```
+drenv clear
+```
+
 ## The environment file
 
 To create an environment you need an yaml file describing the
diff --git a/test/scripts/refresh-cache b/test/scripts/refresh-cache
new file mode 100755
index 000000000..dbf26cdfe
--- /dev/null
+++ b/test/scripts/refresh-cache
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+env_file=envs/regional-dr.yaml
+attempts=10
+delay_seconds=60
+
+test_dir="$(dirname $(dirname $0))"
+
+echo "$(date) Entering $test_dir"
+cd "$test_dir"
+
+echo "$(date) Activating virtual environment"
+source ../venv
+
+for i in $(seq 1 $attempts); do
+	echo "$(date) Refreshing drenv cache (attempt $i/$attempts)"
+	drenv cache -v "$env_file" && exit 0
+	sleep $delay_seconds
+done
+
+echo "Failed to refresh drenv cache"
+exit 1
diff --git a/test/scripts/refresh-cache.crontab b/test/scripts/refresh-cache.crontab
new file mode 100644
index 000000000..f72b3519f
--- /dev/null
+++ b/test/scripts/refresh-cache.crontab
@@ -0,0 +1,9 @@
+# To refresh the cache daily, edit the user crotab (crontab -e) and add the
+# content bellow.
+# NOTES:
+# - update the path to the ramen directory.
+# - ensure all the tools are in the specified PATH.
+
+PATH=/bin:/usr/bin:/usr/local/bin
+
+0 3 * * * /home/github/ramen/test/scripts/refresh-cache