[
https://issues.apache.org/jira/browse/SLING-913?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14064493#comment-14064493
]
Carsten Ziegeler commented on SLING-913:
----------------------------------------
With event based cache, there is no need to distinguish between production and
development - on production there is usually no event, so you get the cache
forever for free.
But I agree that the current approach with checking modified is better than not
caching at all, therefore we could just start with this and see how it works
> Add a cache for pre-compiled scripts
> ------------------------------------
>
> Key: SLING-913
> URL: https://issues.apache.org/jira/browse/SLING-913
> Project: Sling
> Issue Type: New Feature
> Components: Scripting
> Affects Versions: Scripting Core 2.0.2
> Reporter: Felix Meschberger
> Attachments: SLING-913.patch
>
>
> The Java Scripting API provides support for scripting langugages which may
> precompile script source and reuse the precompiled scripts:
> javax.script.Compilable: May be implemented by a ScriptEngine if
> precompilation is
> supported
> javax.script.CompiledScript: Result of calling the Compilable.compile
> method.
> The CompiledScript can be called to repeatedly execute the script without the
> need for recompilation and thus for improved performance.
> The Sling Core Scripting support should make use of this functionality by
> maintaining a cache compiled scripts with the following properties
> * indexed by script path
> * size limited (using LinkedHashMap overwriting the removeEldestEntry
> method)
> * entries are weak or soft references ot cache entries
> A cache entry consists of the following information:
> * The CompiledScript instance
> * The time of last compilation. this is compared to the last modification
> time of the script to decide on whether to recompile
> We might probaly also try to add a reference to the script engine
> implementation bundle to only use the cache entry if the bundle has not been
> stopped since adding the cache entry
> Executing the script would then consist of the following steps:
> 1 Check the cache of precompiled scripts. if an entry exists and can be
> used, use it
> 2. if the ScriptEngine is Compilable:
> 2a. Compile the script and add it to the cache and use it
> 2b. Otherwise have the script engine execute the script
--
This message was sent by Atlassian JIRA
(v6.2#6252)