На какие расширения влияет Trusted Cache ColdFusion - PullRequest
6 голосов
/ 25 ноября 2011

Какие расширения файлов кэшируются Trusted Cache?CFM и CFC очевидны, но как насчет CFR?Существуют ли другие расширения файлов, которые перехватываются Trusted Cache?

Некоторые места, которые я знаю / подозреваю, что файлы попадают в кэш шаблонов:

  • , непосредственно указанные в URL (cfm, cfml, cfc, больше?)
  • cfinclude (любое расширение файла, которое используется в cfinclude, например <cfinclude template="./some.css">)
  • cfmodule (cfm, больше?)
  • cfimport (cfm, также jar и tld?)
  • cfobject, createobject (cfc, также .net, com, java и веб-службы?)
  • cfreport (cfr, который можно выполнить с помощью утилиты cfcompile?)

Существуют ли другие теги, которые будут иметь такой же эффект при добавлении содержимого в кэш шаблона?

Ответы [ 3 ]

7 голосов
/ 30 ноября 2011

Adobe ColdFusion (и Railo) компилируют шаблоны CFML в байт-код JVM и, если это настроено, записывают скомпилированный класс (ы) на диск в виде файлов .class.Кэш шаблонов - это механизм, позволяющий сказать: если целевой класс уже загружен, не беспокойтесь о том, чтобы посмотреть (исходный) файл на диске, чтобы определить, нуждается ли он в перекомпиляции, - доверяйте тому, что находится в памяти.ACF и Railo позволяют указать, что (исходные) файлы можно проверять всегда (не доверять), один раз за запрос, никогда (никогда не доверять).

Это не должно быть новостью для всех.

Очевидно, что ACF и Railo скомпилируют любой файл .cfm или .cfc, который их просят обработать, чтобы они "оказались" в доверенном кэше, если он включен.

Если вы включите файл - любойfile - ACF и Railo также скомпилируют это в байт-код JVM (и создадут файл .class на диске, если настроено для этого).Поскольку включенный файл компилируется, он также «попадает» в доверенный кеш.Что произойдет, если вы включите CSS-файл?Он компилируется в байт-код, который выводит все содержимое файла CSS в виде строки в поток ответов.Так как это скомпилированный класс, который теперь выводит жестко закодированную строку, если вы измените исходный файл CSS и включили доверенный кеш, ACF и Railo будут доверять тому, что находится в загрузчике классов, и не перекомпилируют его (при условии, что источник проверки никогда не проверяется администратором).настройка).

Вы можете убедиться в этом, очистив папку cfclasses, перезапустив ваш CFML-движок и запустив код.Вы увидите файл .class для вашего CSS-файла (при условии, что у вас включено сохранение файлов классов на диск).

Итак, cfinclude принудительно компилирует «любой» файл, и к нему применяются обычные правила доверенного кэша.классы загружены в память.

Я больше не использую ACF, поэтому я не могу подробно говорить о файлах .cfr (Railo не поддерживает файлы отчетов), но это, скорее всего, будет зависеть от того, компилирует ли ACF файл .cfrили нет.Это должно быть легко проверить (заглянув в папку cfclasses).

5 голосов
/ 25 ноября 2011

По умолчанию ColdFusion поставляется с расширениями * .cfm, * .cfc и * .cfml, сопоставленными в JRun в качестве расширений, которым доверяют.Вы можете просмотреть эти сопоставления, открыв конфигурационные файлы j2ee-web.xml и web.xml в \ JRun4 \ servers \ cfusion \ cfusion-ear \ cfusion-war \ WEB-INF \ (или рядом с ним, в зависимости от вашей установки):

<servlet-mapping id="coldfusion_mapping_3">
    <servlet-name>CfmServlet</servlet-name>
    <url-pattern>*.cfm</url-pattern>
</servlet-mapping>
<servlet-mapping id="coldfusion_mapping_4">
    <servlet-name>CFCServlet</servlet-name>
    <url-pattern>*.cfc</url-pattern>
</servlet-mapping>
<servlet-mapping id="coldfusion_mapping_5">
    <servlet-name>CfmServlet</servlet-name>
    <url-pattern>*.cfml</url-pattern>
</servlet-mapping>

Однако здесь вы также можете вручную настроить совершенно новые сопоставления, что позволит ColdFusion анализировать / компилировать теги CFML в файлах с другим расширением (я работал с CFСерверы, которые были настроены для анализа .shtml, например)

Примечание. Вам также придется выполнить некоторые дополнительные настройки для вашего веб-сервера, будь то Apache, IIS или любой другой.

Как только CF сконфигурирован для обработки файла с определенным расширением, он добавляется в список файлов, которые обрабатываются в Trusted Cache - поскольку этот файл в конечном итоге приравнивается к скомпилированному файлу .class.

0 голосов
/ 15 сентября 2012

К сожалению, официального источника этой информации нет.Тем не менее, с большим трудом можно протестировать каждый тег, чтобы увидеть, попадают ли файлы в Trusted Cache.

Ваши первые два пункта обозначены Shawn Holmes 'ответ и ответ Шона Корфилда соответственно.

Bullet 3: cfmodule ограничен файлами cfm, так что расширение - это единственное, о чем вам следует беспокоиться.

Bullet 6: cfreport не должен входить в кэш шаблона, так как он конвертирует файл, а не компилирует его для выполнения кода.

...