Получить дату последнего изменения текущего шаблона без доступа к жесткому диску - PullRequest
1 голос
/ 10 мая 2019

Я знаю, что могу использовать getFileInfo(getCurrentTemplatePath()), чтобы получить дату последнего изменения текущего шаблона, но было бы лучше, если бы я мог просто извлечь ее из памяти. Я имею в виду несколько возможных применений, но я пока не готов их защищать, поэтому сейчас давайте просто скажем, что из любопытства спрашиваю.

Я предполагаю, что сервер приложений должен проверить дату изменения в какой-то момент, чтобы решить, нужно ли его компилировать. Если мне нужно использовать базовую Java, чтобы добраться до нее, это нормально (конечно, лучше использовать подход с чистым CF, но я не очень надеюсь).

Если измененная дата недоступна, тогда я согласился бы на какой-нибудь флаг, указывающий, вызвал ли текущий запрос перекомпиляцию (на самом деле, это может сработать так же хорошо).

1 Ответ

3 голосов
/ 10 мая 2019

Вы ищете coldfusion.runtime.TemplateClassLoader. Он обрабатывает поиск по TemplateCache и либо выбирает уже скомпилированный шаблонный класс, либо вызывает coldfusion.compiler.NeoTranslator для компиляции CFML в него.

<cfset templateUri  = getCurrentTemplatePath()>
<cfset lastCompiled = createObject("java", "coldfusion.runtime.TemplateClassLoader").getLastCompiledTime(templateUri)>
<!--- lastCompiled = unix timestamp in milliseconds --->

Само собой разумеется, , это деталь реализации, и вы не должны полагаться на нее.

...