Moreover if `['foswiki']['config']['Cache']['Enabled']` is set to `true`, a script called `tidy_page_cache.sh` is installed under the tools directory. This can be used to remove orphaned or unnecessary entries. With `['foswiki']['cron']['tidy_page_cache_time']` the script can be run regularly.
echo "DELETE FROM ${TABLE_PREFIX}_pages WHERE topic = '$topic';"
echo "DELETE FROM ${TABLE_PREFIX}_deps WHERE from_topic = '$topic';"
done | wiki_sql
tell_status 'removing non-existing topics'
# Remove topics without cache files
cached_topics | while read -r topic md5; do
[ -f "$CACHE_DIR/$md5" ] && continue
echo "A cache file for $topic has vanished" >&2
echo "DELETE FROM ${TABLE_PREFIX}_pages WHERE topic = '$topic' AND md5 = '$md5';"
done | wiki_sql
tell_status 'removing topics with vanished cache files'
# Clear dependencies
before_count=$(echo "SELECT COUNT(*) FROM ${TABLE_PREFIX}_deps" | wiki_sql)
{
for var in "${UNIMPORTANT_VARIATIONS[@]}"; do
echo "DELETE FROM ${TABLE_PREFIX}_deps WHERE variation LIKE '%::$var=%';"
done
for topic in "${UNIMPORTANT_TOPICS[@]}"; do
echo "DELETE FROM ${TABLE_PREFIX}_deps WHERE from_topic LIKE '$topic';"
done
echo "DELETE FROM ${TABLE_PREFIX}_deps WHERE from_topic NOT IN (SELECT DISTINCT topic FROM ${TABLE_PREFIX}_pages);"
echo "DELETE deps FROM ${TABLE_PREFIX}_deps AS deps LEFT OUTER JOIN ${TABLE_PREFIX}_pages AS pages ON topic = from_topic AND deps.variation = pages.variation WHERE topic IS NULL;"
} | wiki_sql
after_count=$(echo "SELECT COUNT(*) FROM ${TABLE_PREFIX}_deps" | wiki_sql)
echo "Kept $after_count dependencies from $before_count"