Сервер ColdFusion CFC, кэширующий проблему

Я разрабатываю coldFusion приложения на своем ноутбуке со своим собственным сервером ColdFusion 8 с IIS, которые работают на Windows Vista. У меня есть довольно раздражающая проблема.

Проблема состоит в том каждый раз, когда я вношу любые изменения в свой CFC's, кажется, что, если я не перезапускаю свой Сервер приложений ColdFusion, изменения в моем CFC's не вступят в силу unti, который я делаю так. Часто времена, я должен перезапустить свою целую машину, потому что Windows не может перезапустить сервис Сервера приложений ColdFusion. Существует ли лучший способ сбросить cfc кэш Сервера ColdFusion?

Это начинает сосать много времени, просто имеющего необходимость перезапускать время от времени после того, как я внесу изменение. Любое понимание значительно ценилось бы!

Спасибо!

10
задан GavinWoods 11 February 2010 в 22:29
поделиться

7 ответов

Я гарантирую, что вы создаете их как объекты в какой-то постоянной области видимости, например: приложение, области сеанса. Что я обычно делаю, чтобы избежать этой проблемы во время разработки, так это создать параметр url и проверить его в файле application.cfm / cfc (или где бы вы ни создавали объекты) и воссоздать объекты, если этот параметр url обнаружен.

Пример:

<cfif NOT structKeyExists(application,"myObj") OR structKeyExists(url,"reinit")>
    <cfset application.myObj = createObject("component","path.to.cfc") />
</cfif>

конечно, вам нужно будет проделать это с каждым объектом, с которым у вас возникла проблема.

9
ответ дан 4 December 2019 в 01:00
поделиться

Просто задаю очевидное: Вы вызываете эти функции из onApplicationStart?

0
ответ дан 4 December 2019 в 01:00
поделиться

Я не уверен, есть ли это в других версиях CF, но в CF9 вы можете выполнить ApplicationStop (), и он сбросит CFApplication и перезагрузит его.

1
ответ дан 4 December 2019 в 01:00
поделиться

В вашем Coldfusion Administrator у вас включено (отмечено) одно из следующих действий?

Caching > Trusted Cache

Caching > Save class files

0
ответ дан 4 December 2019 в 01:00
поделиться

Возможно, попробуйте кнопку «Очистить кеш шаблона» в разделе «Администратор CF> Кэширование».

Такое случалось со мной раньше. Обычно мне приходится нажимать кнопку несколько раз, чтобы CF зарегистрировал измененные файлы.

Можно также попробовать снять все флажки в разделе «Кэширование». Примечание: делайте это только для машин разработки !!!

0
ответ дан 4 December 2019 в 01:00
поделиться

Если у вас должно быть кеширование в dev, вы можете сделать то же, что и я:

Сначала установите флажок URL-адреса в верхней части вашего метода onRequest (), который вызовет метод onApplicationStart ():

<cfif IsDefined("URL.dev")>
    <cflock timeout="5" scope="Session" type="Exclusive">
        <cfif URL.dev EQ true>
            <cfset SESSION.debug = true />
        <cfelse>
            <cfset StructDelete(SESSION, "debug") />
        </cfif> 
    </cflock>
</cfif>

<cflock timeout="5" scope="Session" type="Readonly">
    <cfif IsDefined("URL.appreset") or IsDefined("SESSION.dev")>
            <cfset StructClear(SESSION) />
            <cfset onApplicationStart() />
        </cfif>
</cflock>   

Это решит большинство ваших проблем. Однако, если у вас есть проблема в классе, который вы загружаете, вам не удастся проверить наличие этого флага. Решение, которое я использую для этого:

Добавьте следующее в нижнюю часть вашего метода onError ():

<cfif IsDefined("APPLICATION")>
      <cfset StructClear(APPLICATION) />
</cfif>

Наконец, вы хотите проверить, существует ли объект APPLICATION и что каждый класс, который вы объявляете как часть области APPLICATION существует или вы хотите вспомнить onApplicationStart (). Для этого добавьте следующий код прямо под первым блоком кода в верхней части onRequestStart ():

<cfif not IsDefined("APPLICATION")
    OR not StructKeyExists(APPLICATION, "[ClassName1]")
    OR not StructKeyExists(APPLICATION, "[ClassName2]")
    ...>
    <cfset onApplicationStart() />
</cfif>
0
ответ дан 4 December 2019 в 01:00
поделиться

У меня была точно такая же проблема, иногда мне приходилось перезагружать машину, если изменения не отражались после запуска сервера в диспетчере служб.

Что я делаю, так это в (Администратор, Кэширование): 1. Я снял все параметры кэша 2. Я установил значения текстового поля на "0" 3. Я оставляю страницу (Администратор, Кэширование) открытой при разработке,так что, когда я загружаю изменение, и оно не отражается, я просто нажимаю «Очистить кэш шаблонов сейчас».

Это то, что работает для меня на CF8, встроенный веб-сервер, XP.

0
ответ дан 4 December 2019 в 01:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: