با سلام و خسته نباشید

چندتا سوال داشتم اگه امکانش هست پاسخ دهید:

1- جهت کش کردن بخش های صفحات، چگونه تشخیص دهیم که چه قسمتهایی را بایستی کش کنیم؟

2- آیا جهت کش کردن می بایستی اون بخش رو در یک Action جداگانه نوشت و بمراتب PartialView آنرا Render کرد؟

یعنی اینکه یه Action به فرم زیر بنویسیم

[HttpGet]
[OutputCache(Duration = 86400, VaryByParam = "none")]
public ActionResult MenuBottom()
{
return PartialView("_MenuBottomPartial");
}


و همچنین کد زیر را داخل یه PartiaView ذخیره کنیم
کد HTML:
<div id="footer">
    <div id="footer_menu">
        @Html.ActionLink("صفحه اصلی", "Index", "Home") |
         @Html.ActionLink("قوانین", "Index", "Home") |
         @Html.ActionLink("تبلیغات", "Index", "Home") |
         @Html.ActionLink("خدمات", "Index", "Home") |
         @Html.ActionLink("ارتباط با ما", "Index", "Home") |
         @Html.ActionLink("راهنما", "Index", "Home")
    </div>
    <div id="BottomNote">کلیه محتوای اتوسط کاربران درج شده است  هیچ مسئولیتی نسبت به آنها ندارد.</div>
    <div id="copyrights">&copy; @DateTime.Now.Year</div>
</div>
و در _Layout بشکل زیر Render کنیم
کد HTML:
 @{Html.RenderAction("MenuBottom", "Home");}

3- در اینصورت بنظرم کش کردن مثال بالا بهینه نیست!!

چون باعث میشه 2 بار سازنده کلاس فرآخوانی بشه. از طرفی اگه از db استفاده کرده باشیم 2بار سازنده dbContext فرآخوانی خواهد شد


متشکرم از راهنمایی هاتون