私はそれが非常に基本的な質問であることを知っていますが、それでも私はそれが実装されていることについて混乱しています。私のインタビューの1つで、彼らは私に多言語(10言語)のWebサイトがあることを尋ねました。すべてのコンテンツをキャッシュに入れたい。この機能を実現する方法を教えてください。出力キャッシュに書き込む必要がある具体的なものはありますか?
私のすべてのコンテンツはリソースファイルにあります。
私はそれが非常に基本的な質問であることを知っていますが、それでも私はそれが実装されていることについて混乱しています。私のインタビューの1つで、彼らは私に多言語(10言語)のWebサイトがあることを尋ねました。すべてのコンテンツをキャッシュに入れたい。この機能を実現する方法を教えてください。出力キャッシュに書き込む必要がある具体的なものはありますか?
私のすべてのコンテンツはリソースファイルにあります。
私はあなたが出力キャッシングの文脈でそれを求めていると仮定しているので、簡単なアプローチはを使用することVaryByCustom
です。例えば、
<%@ OutputCache VaryByCustom="Culture" ... %>
そしてglobal.asaxで
public override string GetVaryByCustomString(HttpContext Context, string Custom)
{
if (Custom == "Culture")
{
// return culture specific string
return Context.Request.UserLanguages[0];
}
return base.GetVaryByCustomString(Context, Custom);
}
実装は、現在のユーザーの文化をどのように追跡しているかによって異なります。たとえば、セッション変数(またはプロファイルデータ)を使用している可能性があるため、セッション変数などに基づいて現在のユーザーのカルチャを返す必要があります。
SEOの使いやすさ(Webサイトがコンテンツ指向であるかどうかは問題ありません)から、URLの一部としてカルチャ情報が必要になる場合があります。例えば、
<%@ OutputCache ... varybyparam="Culture" %>
http://www.yourdomain.com/somepage.aspx?Culture=en
http://www.yourdomain.com/somepage.aspx?Culture=fr
いいえ、明らかに言語ごとに異なるURLを設定する必要がありますが、それ以外の場合は、デフォルトの言語のみが検索エンジンに表示されます(Cookieなどを記憶していません)。