5

私の ASP.NET MVC Web サイトでは、さまざまな CSS スタイルから選択できます。将来、これらの CSS スタイルの名前はデータベースに保存されます。

次の方法があります(まだデータベースと通信していません)

public FileResult CssStyle()
{
    string style = "/Content/wide-site.css";

    if (!String.IsNullOrWhiteSpace(style))
    {
        return File(style, "text/css");
    }

    return File("/Content/site.css", "text/css");
}

そして、私の _Layout.cshtml では、次の行を使用してスタイルシートを読み込みます。

<link href="@Url.Action("CssStyle", "Home")" rel="stylesheet" type="text/css" />

この CssStyle() メソッドがデータベースへのリクエストを行い、ページが読み込まれるたびにクエリを実行するとします。これらの不要な要求を防ぐ最善の方法は何ですか? もしかしてセッション?

4

3 に答える 3

3

ログイン時など、重要なときにクエリを実行し、CSS ファイル名を に保存しますSession。ユーザーがスタイルを変更できるプロファイル ページがある場合は、変数を更新する必要もありSessionます。これにより、ユーザーがスタイルを変更すると、すぐに新しいスタイルが表示されます。

次に、メソッドで、その値を から引き出しますSession

var cssFile = Session["UserStyle"];

例えば。

于 2013-03-20T14:19:33.353 に答える
0

キャッシュするか、セッション変数に保存することをお勧めします。

そうすれば、毎回不必要にデータベースにアクセスする必要がなくなります。

于 2013-03-20T14:19:06.787 に答える
-1

まず、この操作を最適化する必要があることを確認しましたか?セッションを使用している場合は、通常、ファイルシステムにアクセスしています。これは、少なくともローカルインストールでは、DBアクセスと同じ桁数です。

DBがリモートであり、接続が非常に遅いため、DBアクセスを減らすために努力する価値があると想定します。

また、ユーザーがスタイルシートをどのように選択するかが明確ではないため、ある種のパラメーターがあると仮定します。

セッションを使用しないソリューションが必要な場合、たとえば、CSSファイルごとに1日あたり最大1つのDBアクセスが必要な場合は、次のようにすることができます。

public FileResult CssStyle(variant which)
{
    // Hash the function, date and which stylesheet to ensure global,
    // valid, unique, and easily replicated filename
    filename = md5("get_css_style" + today() + which) + ".css"
    if (!file_exists(filename))
    {
        // DB operation here
        // create file here using filename
    }
    return File(filename, "text/css");
}
于 2013-03-20T14:39:49.713 に答える