|
In 6671b973e6de5abc46829a27fd3bbb989d68ca3a the load_template method
was altered to use a cache key other than the template name. The key
chosen was the abs path as returned from the loader get_source
method. Unless there is no path in which case the name is
used. Unfortunately this introduced a performance regression, #485, as
the get_source method (in the FileStoreLoader) loads the template
(causing IO).
The purpose of #332 was to allow the loader to change whilst ensuring
the correct template was loaded, i.e. to fix this case
env.loader = loader1
env.get_template('index.html') # return loader1/index.html
env.loader = loader2
env.get_template('index.html') # also return loader1/index.html because of cache
This commit changes the cache key to be a tuple of the id(loader) and
the template name. Therefore fixing the above case without calling the
get_source method and thereby avoiding the IO load.
A test has been added to ensure the above case works as expected, this
required a minor refactor of the caching tests.
|