6

信頼できるキャッシュによってキャッシュされるファイル拡張子はどれですか?CFMとCFCは明らかなものですが、CFRについてはどうでしょうか。信頼できるキャッシュによってキャッチされる他のファイル拡張子はありますか?

ファイルがテンプレートキャッシュに入ることがわかっている/疑われる場所は次のとおりです。

  • URLで直接指定(、、、、cfmもっと?)cfmlcfc
  • cfinclude(cfincludeで使用されるファイル拡張子など<cfinclude template="./some.css">
  • cfmodule(cfm、more?)
  • cfimport(cfm、またjartld?)
  • cfobject、createobject(cfc、.net、com、java、およびWebサービスも?)
  • cfreport(cfrcfcompileユーティリティで準拠できますか?)

テンプレートキャッシュにコンテンツを追加するのと同じ効果を持つ他のタグはありますか?

4

3 に答える 3

7

AdobeColdFusion(およびRailo)はCFMLテンプレートをJVMバイトコードにコンパイルし、そうするように構成されている場合は、コンパイルされたクラスを.classファイルとしてディスクに書き込みます。テンプレートキャッシュは、次のように言うためのメカニズムです。ターゲットクラスがすでにロードされている場合は、ディスク上の(ソース)ファイルをわざわざ調べて、再コンパイルが必要かどうかを確認しないでください。メモリ内にあるものを信頼してください。

ACFとRailoの最近の機能強化により、(ソース)ファイルを常に(信頼できない)チェックできるように指定できます。リクエストごとに1回、決して(常に信頼できる)チェックできません。

それは誰にとってもニュースではないはずです。

明らかに、ACFとRailoは、処理を求められた.cfmまたは.cfcファイルをコンパイルするため、有効になっている場合は、信頼できるキャッシュに「最終的に」保存されます。

ファイル(任意のファイル)をcfincludeすると、ACFとRailoもそれをJVMバイトコードにコンパイルします(そうするように構成されている場合は、ディスク上に.classファイルを作成します)。インクルードされたファイルはコンパイルされるため、信頼できるキャッシュにも「最終的に」保存されます。その場合、CSSファイルを含めるとどうなりますか?CSSファイルのコンテンツ全体を文字列として応答ストリームに出力するバイトコードにコンパイルされます。これはコンパイルされたクラスであり、ハードコードされた文字列を出力するため、CSSソースファイルを変更して信頼できるキャッシュを有効にすると、ACFとRailoはクラスローダーの内容を信頼し、再コンパイルしません(ソースが管理者であることを「決して」チェックしないと仮定します)。設定)。

これを確認するには、cfclassesフォルダーをクリーンアップし、CFMLエンジンを再起動して、コードを実行します。CSSファイルに.classファイルが表示されます(クラスファイルをディスクに保存できるようになっていると仮定します)。

したがって、cfincludeは「任意の」ファイルのコンパイルを強制し、信頼できるキャッシュの通常のルールがメモリにロードされたクラスに適用されます。

私はもうACFを使用していないので、.cfrファイルについて詳しく話すことはできません(Railoはレポートファイルをサポートしていません)が、ACFが.cfrファイルをコンパイルするかどうかに依存する可能性があります。簡単に確認できるはずです(cfclassesフォルダーを調べてください)。

于 2011-11-30T17:34:44.733 に答える
5

デフォルトでは、ColdFusionには、信頼できる拡張機能としてJRunにマップされた* .cfm、*。cfc、および*.cfml拡張機能が付属しています。これらのマッピングを表示するには、\ JRun4 \ servers \ cfusion \ cfusion-ear \ cfusion-war \ WEB-INF \(またはインストールに応じてこの近く)にあるj2ee-web.xmlおよびweb.xml構成ファイルを開きます。 :

<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タグを解析/コンパイルできるようになります(.shtmlを解析するように構成されたCFサーバーを使用しました。例えば)

注:Apache、IISなど、Webサーバーの追加構成も行う必要があります。

CFが特定の拡張子のファイルを処理するように構成されると、そのファイルは最終的にコンパイルされた.classファイルと同等であるため、信頼できるキャッシュで処理されるファイルのリストに追加されます。

于 2011-11-25T18:02:41.380 に答える
0

残念ながら、この情報の公式の情報源はありません。ただし、多くの作業を行うことで、すべてのタグをテストして、ファイルが信頼できるキャッシュに格納されるかどうかを確認することができます。

最初の2つの箇条書きは、それぞれShawnHolmesの回答とSeanCorfieldの回答でカバーされます

箇条書き3:cfmoduleはcfmファイルに制限されているため、そこで心配する必要があるのは拡張子だけです。

Bullet 6:cfreportは、コードを実行するためにファイルをコンパイルするのではなく、ファイルを変換するため、テンプレートキャッシュに入らないでください。

于 2012-09-14T21:37:35.550 に答える