diff --git a/buildlab.in b/buildlab.in
index 43ffb0824440e00c7c51787f02d884e65f023bd9..2ff21d323b3f5ce59d7e6fe1537ac473d7386f81 100755
--- a/buildlab.in
+++ b/buildlab.in
@@ -88,6 +88,7 @@ prepare_chroot() {
 	local version="$2"
 	local mirror="$3"
 	local arch="$4"
+	local enablecache="$5"
 
 	msg "Setting up repositories for mirror $mirror with version $version at $path..."
 
@@ -95,6 +96,11 @@ prepare_chroot() {
 	echo "http://$mirror/alpine/$version/packages/$arch/main" >> "$path"/etc/apk/repositories
 	echo "http://$mirror/alpine/$version/packages/$arch/testing" >> "$path"/etc/apk/repositories
 
+	if [ ! -z "$enablecache" ]; then
+		mkdir -p "$path"/var/cache/apk
+		ln -s /var/cache/apk "$path"/etc/apk/cache
+	fi
+
 	mkdir -p "$path"/var/lib/apk
 	echo "alpine-base" > "$path"/var/lib/apk/world
 
@@ -187,6 +193,7 @@ usage() {
 	echo " -m	APK repository mirror"
 	echo " -v	APK distribution version"
 	echo " -a	APK repository architecture"
+	echo " -k	Enable APK caching"
 	echo " "
 	echo "Updating build roots (buildlab -u):"
 	echo " "
@@ -205,7 +212,7 @@ usage() {
 
 unset force
 unset recursive
-while getopts "chqCp:v:m:a:b:u" opt; do
+while getopts "chqCkp:v:m:a:b:u" opt; do
 	case $opt in
 		'c') default_colors
 		     color_opt="-c";;
@@ -215,7 +222,8 @@ while getopts "chqCp:v:m:a:b:u" opt; do
 		'p') buildpath="$OPTARG";;
 		'm') buildmirror="$OPTARG";;
 		'v') buildver="$OPTARG";;
-	'a') buildarch="$OPTARG";;
+		'a') buildarch="$OPTARG";;
+		'k') enablecache=1;;
 		'b') buildpkg="$OPTARG";;
 		'u') update="-u";;
         esac
@@ -224,7 +232,7 @@ shift $(( $OPTIND - 1 ))
 
 if [ ! -z "$create" ]; then
 	msg "Creating new chroot at $buildpath..."
-	prepare_chroot $buildpath $buildver $buildmirror $buildarch
+	prepare_chroot $buildpath $buildver $buildmirror $buildarch $enablecache
 	exit 0
 fi