diff --git a/cdist/conf/type/__package_update_index/explorer/currage b/cdist/conf/type/__package_update_index/explorer/currage
new file mode 100644
index 00000000..cd042bd5
--- /dev/null
+++ b/cdist/conf/type/__package_update_index/explorer/currage
@@ -0,0 +1,34 @@
+#!/bin/sh
+#
+# 2018 Thomas Eckert (tom at it-eckert.de)
+#
+# This file is part of cdist.
+#
+# cdist is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# cdist is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with cdist. If not, see .
+
+os="$("$__explorer/os")"
+
+case "$os" in
+    debian|ubuntu|devuan)
+        if [ -f "/var/cache/apt/pkgcache.bin" ]; then
+            echo $(($(date +"%s")-$(stat --format '%Y' /var/cache/apt/pkgcache.bin)))
+        else
+            echo 0
+        fi
+        ;;
+    *)  echo "Your operating system ($os) is currently not supported by this type (${__type##*/})." >&2
+        echo "Please contribute an implementation for it if you can." >&2
+        exit 1
+        ;;
+esac
diff --git a/cdist/conf/type/__package_update_index/gencode-remote b/cdist/conf/type/__package_update_index/gencode-remote
index 20beed5b..d84e7953 100755
--- a/cdist/conf/type/__package_update_index/gencode-remote
+++ b/cdist/conf/type/__package_update_index/gencode-remote
@@ -22,6 +22,10 @@
 #
 
 type="$__object/parameter/type"
+if [ -f "$__object/parameter/maxage" ]; then
+    maxage="$(cat "$__object/parameter/maxage")"
+    currage="$(cat "$__object/explorer/currage")"
+fi
 
 if [ -f "$type" ]; then
     type="$(cat "$type")"
@@ -39,9 +43,23 @@ else
     esac
 fi
 
+if [ -n "$maxage" ] && [ "$type" != "apt" ]; then
+    echo "ERROR: \"--maxage\" only supported for \"apt\" pkg-manager." >&2
+    exit 1
+fi
+
 case "$type" in
     yum) ;;
-    apt) echo "apt-get --quiet update" ;;
+    apt) if [ -n "$maxage" ]; then
+             ## check if we need to update:
+             if [ $currage -ge $maxage ]; then
+                echo "apt-get --quiet update"
+             fi
+         else
+                echo "apt-get --quiet update"
+         fi
+         echo "apt-cache updated (age was: $currage)" >> "$__messages_out"
+         ;;
     pacman) echo "pacman --noprogressbar --sync --refresh" ;;
     *)
         echo "Don't know how to manage packages on: $os" >&2
diff --git a/cdist/conf/type/__package_update_index/man.rst b/cdist/conf/type/__package_update_index/man.rst
index 454aa05b..b63af654 100644
--- a/cdist/conf/type/__package_update_index/man.rst
+++ b/cdist/conf/type/__package_update_index/man.rst
@@ -27,6 +27,16 @@ type
     * yum for Red Hat
     * pacman for Arch Linux
 
+maxage
+    Available for package manager apt, max time in seconds since last update.
+    Repo update is skipped if maxage is not reached yet.
+
+MESSAGES
+--------
+apt-cache updated (age was: currage)
+        apt-cache was updated (run of `apt-get update`). `currage` is the time
+        in seconds since the previous run.
+
 
 EXAMPLES
 --------
@@ -39,10 +49,15 @@ EXAMPLES
     # Force use of a specific package manager
     __package_update_index --type apt
 
+    # Only update every hour:
+    __package_update_index --maxage 3600 --type apt
+    # same as above (on apt-type systems):
+    __package_update_index --maxage 3600
 
 AUTHORS
 -------
-Ricardo Catalinas Jiménez 
+| Ricardo Catalinas Jiménez 
+| Thomas Eckert 
 
 
 COPYING
diff --git a/cdist/conf/type/__package_update_index/parameter/optional b/cdist/conf/type/__package_update_index/parameter/optional
index aa80e646..7a0be716 100644
--- a/cdist/conf/type/__package_update_index/parameter/optional
+++ b/cdist/conf/type/__package_update_index/parameter/optional
@@ -1 +1,2 @@
 type
+maxage