0

私はJSF2.0を使用してIcefacesおりGlassfish、プロジェクトでこのアプリケーションを可能な限り最適化したいと考えています。また、パラメーターを送信するための最も最適化された方法を知りたいと思います。

最初の1:/BackOffice/test.xhtml?id=7 in urlString a=(String) FacesContext.getCurrentInstance().getExternalContext().getRequestMap().get("id");でBeanを使用し@RequestScoped

<f:metadata>
        <f:viewParam name="id"  value="#{id}">
        </f:viewParam>
    </f:metadata>

jsfで

または2番目:バッキングBeanを使用する@SessionScoped

4

3 に答える 3

1

どのように正確に最適化されましたか? SessionScoped Bean は永続的なメモリを保持するため、多数のユーザーがいる場合は問題になる可能性があります。RequestScope では、リクエストごとに id を渡す必要があります。これはどちらの方法でもそれほど高価ではありませんが、リクエスト スコープの Bean をリクエストごとに作成する必要があります。

私は一般的に、ユーザーがサイトにいる間ずっと値を保持する必要がない限り、セッション パラメーターよりもリクエスト パラメーターを優先します

于 2011-04-07T13:54:01.630 に答える
1

「できる限り最適化する」ということはありません。最適化とは、トレードオフを行うことです。CPU をメモリと交換し、メモリを帯域幅と交換し、帯域幅を CPU と交換します。

Id を渡す方法は、おそらく問題の中で最も重要ではありません。それを忘れて。最適化したい場合は、まずビューステートをクライアントとサーバーのどちらで保持しているかを自問してください。これは大きな違いを生むでしょう (いいえ、ここには「最適な」選択はありません。それはトレードオフです)。次は、データベースの扱い方です。リクエストごとにデータをロードしますか、それともビューまたはセッションで保持しますか? JPA を使用する場合、2 次キャッシュを有効にしますか? これらはあなたが尋ねるべき質問です。リクエスト パラメータの詳細ではありません。

于 2011-04-07T20:58:02.360 に答える
0

最適化したい場合は、プロファイリングから始めるべきです。これら 2 つの違いが重要になるとは思えません。

リクエスト パラメーターはリクエスト パラメーターとして渡す必要があります。そうしないと、ブックマーク、ブラウザーの履歴、検索エンジンのインデックス作成、およびキャッシュが機能しなくなります。

于 2011-04-07T14:23:26.997 に答える