2012-04-18 26 views
3

CFCオブジェクトをREQUESTスコープに格納して後でアクセスすることは安全ですか?現在、私たちのサイトは、ナビゲーションデータを少なくとも2回、場合によっては3回パンくずリスト機能を使用してロードします。しかし、このデータは変わることがありますが、ほとんどの場合、3つの別々のコールが同じ正確なナビゲーションデータを取得することになります。ColdFusion CFCインスタンスをREQUESTスコープに格納しても安全ですか?

したがって、最初のロード後にナビゲーションデータ何らかの構造体のREQUESTスコープとその後の呼び出しで、そのデータが既に存在するかどうかを確認し、存在する場合は、再作成するのではなく格納されているものを使用してください。私はこれがおそらく良い練習ではないが、含まれているオブジェクトの外側に共有スコープにアクセスすることを知っているが、最終的に私たちのページの読み込み時間の半分を剃ることができる...

私はそれを行うことができる、我々はそれのいくつかは、おそらくこれははい...

+0

は、しかし、私は、キャッシングのこの種のセッションスコープで見てね。この回答を読んでください:http://stackoverflow.com/questions/25672/coldfusion-when-to-use-the-request-scope –

+0

セッションに保存するか、他の永続的なスコープは私たちのためには機能しません。私はすでにそれを試してみました。私は要求が終わった後に完全に "投げ捨てられる"と仮定しているので、私は要求を検討していましたが、要求ごとにこのデータをキャッシュすることさえもおそらくページロード時間の少なくとも1/2を節約することができます。要求ごとに同じデータを複数回ロードします。 – jzimmerman2011

+0

単なるリクエストであれば、テンプレート内の変数スコープはどのように呼び出されますか?前と同じように使用しました。この変数は関数内でアクセス可能である必要がありますか? –

答えて

3

variablesまたはrequestのいずれかのスコープが目的に適していますが、キャッシュされた変数を引数として受け入れるには、この変数へのアクセスが必要な関数を変更することをお勧めします。グローバル変数(現在のリクエストに制限さえ1)に依存することによって、それはinit()方法で渡され、そのCFC内のメソッドで使用するために保存することができフロンに関しては(あなたがそれを初期化すると仮定した場合)

あなただけの潜在的にありますその方法がよりカプセル化されていることを保証することによって解決されるだろう、あなた自身が困難を引き起こしている。それが答えに関連する情報を持っているよう

以前の私のコメントで述べたように、ColdFusion - When to use the "request" scope?は、迅速な読み取りの価値があります。それはアプリケーションごとのだならば、それはユーザごと、またはアプリケーションのだ場合は、複数のpageloads間で情報を維持することを希望するだろうかどうかは不明

+1

はい、これは良い習慣ではありませんが、物事が現在構造化されていることを知っています。私はこれらのCFCメソッドの署名を改訂することは良い考えではないと思っています...私たちの現在のコードは、コードを記述して使用する前に、これらの設計上の考慮事項が作成されるはずのゼロから始めてください。今でも、私たちはこの新製品を開発するまで、私たちを抱きしめるために少しだけ手を加えています。 – jzimmerman2011

+0

次に、述べたように、 '変数'または '要求'は適切で十分に安全です。それらが破壊されていることを確認するには、スクリプトの最後に 'StructDelete(request、 'yourVariableName');'を実行してください –

0

を行うことが安全であればそう思っていた、我々は/店舗特定のものを使用する方法から、メモリリークされ、最近では、サーバーに問題がありました。 REQUESTスコープにアクセスできる唯一の要求は、現在の要求です。

関連する問題