Publisher does not support the Fluid field type. Please do not contact asking when support will be available.

If you purchased an add-on from expressionengine.com, be sure to visit boldminded.com/claim to add the license to your account here on boldminded.com.

Ticket: Changing TTL to “0” sets static cache items to expire in 5 seconds

Status Resolved
Add-on / Version Speedy 1.6.0
Severity
EE Version 7.1.6 PRO

University Communications

Nov 16, 2022

When I change the speedy_ttl value to “0” in the config settings, the expiration time for static cache items is set to 5 seconds (see screenshot). The expected behavior is the cache items should not expire until cache is broken, correct?

This was set in config.php:
$config[‘speedy_ttl’] = “0”;

Thank you!

#1

BoldMinded (Brian)

For static caching if the TTL is less than 5 seconds it defaults to 5 seconds because of potential redirect loops. All other drivers do accept a 0 value, but not static (I should update the docs, sorry about that). If you need long TTL for static cache you’ll have to give it a high number. You could try this…

Update line 297 of the StaticDriver.php to this:

if ($ttl !== 0 && $ttl < 5) {
                $ttl = 5;
            }
#2

BoldMinded (Brian)

Or just don’t set the TTL…

#3

University Communications

Thanks, I tried making the code change to StaticDriver.php but it didn’t have any effect. It still sets expires at to 5 seconds. If I don’t set the TTL at all, then it defaults to 1 hour.

#4

BoldMinded (Brian)

On line 293 of that file change the conditional to this instead:

if ($ttl === false || $ttl === 0) {
#5

University Communications

Great, changing that conditional worked. Cache items show expiration as infinite now. Note though that setting TTL to “0” with quotes doesn’t work. Needs to be without quotes around the 0 because of strict equality operator in the conditional:

$config[‘speedy_ttl’] = 0;

Thank you!

#6

BoldMinded (Brian)

I changed it to a falsey check…

if (!$ttl) {
#7

BoldMinded (Brian)

Actually, this is a better change.

if ($ttl === false || (is_numeric($ttl) && (int) $ttl === 0)) {

You could also just set $config[‘speedy_ttl’] = false; too and it would have worked.

Login to reply