Upon each invocation of the PHP application, Smarty tests to see if the current template has changed (different timestamp) since the last time it was compiled. If it has changed, it recompiles that template. If the template has yet not been compiled at all, it will compile regardless of this setting. By default this variable is set to TRUE.

Once an application is put into production (ie the templates won't be changing), the compile check step is no longer needed. Be sure to set $compile_check to FALSE for maximum performance. Note that if you change this to FALSE and a template file is changed, you will *not* see the change since the template will not get recompiled.

If $caching is enabled and $compile_check is enabled, then the cache files will get regenerated if an involved template file or config file was updated.

As of Smarty 3.1 $compile_check can be set to the value Smarty::COMPILECHECK_CACHEMISS. This enables Smarty to revalidate the compiled template, once a cache file is regenerated. So if there was a cached template, but it's expired, Smarty will run a single compile_check before regenerating the cache.

See $force_compile and clearCompiledTemplate().