في ASP.NET ، هل من الممكن إخراج ذاكرة التخزين المؤقت باسم المضيف؟ أي varybyhost أو varbyhostheader؟

StackOverflow https://stackoverflow.com/questions/2807610

سؤال

لدي موقع ويب يحتوي على عدد من الرؤوس المضيفة. يعتمد السمة والبيانات على رأس المضيف ، وتحميل المضيفين المختلفين مواقع مختلفة المظهر.

لذلك دعونا نتخيل أن لدي موقع ويب يسمى "فو" يعيد نتائج البحث. نفس الرمز يدير كلا الموقعين المدرجين أدناه. إنها نفس الخادم والموقع (باستخدام الرؤوس المضيفة)

  1. www.foo.com
  2. www.foo.com.au

الآن ، إذا ذهبت إلى .com, ، الموقع تحت عنوان باللون الأزرق. إذا ذهبت إلى .com.au الموقع ، هو تحت عنوان باللون الأحمر.

والبيانات مختلفة عن نتيجة البحث نفسها ، بناءً على اسم المضيف: نتائج الولايات المتحدة .com والنتائج الأسترالية ل .com.au.

إذا كنت أرغب في استخدام OutputCaching, ، هل يمكن التعامل مع هذا وتقسيمه باسم المضيف؟

أنا قلق من أنه بعد أن يذهب الشخص إلى .com الموقع ، (يعيدنا بشكل صحيح النتائج) أن الشخص الثاني يزور .com.au الموقع والبحث عن نفس البيانات سيحصلون على السمة ونتائج .com موقع.

هل التخزين المؤقت ممكن؟

هل كانت مفيدة؟

المحلول

نعم ، يمكنك "تختلف حسب العرف". أنا أستخدم نفس الشيء:

ضع ما يلي في global.asax.cs:

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    if (custom == "Host")
    {
        return context.Request.Url.Host;
    }
    return String.Empty;
}

ثم في وحدة التحكم الخاصة بك:

[OutputCache(VaryByParam = "None", VaryByCustom="Host", Duration = 14400)]
public ActionResult Index()
{
    return View();
}

نصائح أخرى

تفحص ال varybycustom معلمة OutputCache التوجيه.

لتحديد ما يحدث عندما يتم استدعاء VaryByCustom ، تحتاج إلى تجاوز طريقة GetVaryByCustomString:

public override string GetVaryByCustomString(HttpContext context, string custom)
{
    if(custom == "Your_Custom_Value")
    {
        // Do some validation.
        // Return a string for say, .com, or .com.au

    }
    return String.Empty;
}

المفتاح هو إرجاع قيمة السلسلة لكل مثيل تريد ذاكرة التخزين المؤقت. في حالتك ، ستحتاج طريقتك المفرطة إلى تجريد الجزء ".com" أو ".com.au" من عنوان URL وإعادته. كل قيمة مختلفة تنتج ذاكرة التخزين المؤقت المختلفة.

HTH

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top