سلام
مواردی که من از همون لینکی که گذاشتید به صورت دست و پا شکسته متوجه شدم 
اولاً که Cache-Control عنصر اصلی HTTP Caching هستش و اگر از هر کدوم یک از سایر مقادیر گفته شده استفاده کنید تا زمانی که Cache-Control تعیین نکرده باشید تاثیری نداره.
تفاوت public یا private بودن مقدار Cache-Control در اینه که اگر public باشه هم مرورگر های معمولی بدون پــروکسی و هم پــروکسی سرور ها محتوا رو Cache میکنن اما اگه روی حالت private باشه فقط مرورگر های معمولی بدون پــروکسی Cache رو انجام میدن و پـروکسی سرور ها دیگه Cache نمیکنن.
به نظرم حالت public اصولاً باید بهتر باشه مگر در مواردی خاص.
همچنین Cache-Control علاوه بر تعیین public یا private بودن حالت کش شدن امکان تعیین زمان کش هم به صورت توکار با تعیین مقدار max-age بر اساس ثانیه داره.
تفاوت max-age در Cache-Control با هدر مجزا Expires در اینه که max-age بر اساس ثانیه های بعد از اولین لود فایل یا صفحه رو کش میکنه اما Expires یک تاریخ انقضاء دقیق و مشخص در آینده رو هدف میگیره مثل نمونه های زیر:
max-age که بر اساس ثانیه های بعد از اولین لود فایل کش میکنه:
کد:
Cache-Control:public, max-age=31536000
در این کد 31536000 ثانیه برابر با 365 روز کش تعیین شده.
اینم Expires که بر اساس یه تاریخ انقضاء دقیق و مشخص کش میکنه:
کد:
Cache-Control:public
Expires: Mon, 25 Jun 2012 21:31:12 GMT
در این کد به تاریخ دوشنبه 25 ژوئن 2012 برای اتمام کش و تازه سازی فایل اشاره شده.
اگر همزمان max-age و Expires با هم تعیین شده باشن مرورگر مقدار max-age رو در اولویت قرار میده و بر اساس اون کش میکنه.
تا اینجا Cache-Control و Expires برای کش کردن با زمان یا تاریخی خاص هستن اما مقادیری برای کش کردن به صورت شرطی هم وجود داره که بر اساس شرط هایی خاص زمان کش یا حذف کش رو برای مرورگر تعیین میکنن.
درخواست های Cache شرطی به مرورگر اجازه میدن تا ببینه که آیا یک نسخه به روز از اون فایل یا صفحه رو در کش خود داره یا نه و اگر صرفاً نسخه به روزی در دسترس نداشت دوباره صفحه رو لود و کش کنه.
در این حالت مرورگر اطلاعاتی رو درباره محتوای کش شده به سرور می فرسته و سرور وظیفه داره که تعیین کنه که اطلاعات کش شده درست هستن یا باید به روز شوند.
دو نوع HTTP Header برای ایجاد کش کردن های شرطی وجود دارن یکی Last-Modified و یکی ETag.
Last-Modified همونطور که از اسمش معلومه به معنای تاریخ آخرین ویرایش صفحه یا فایل هستش برای همین این گزینه مثل گزینه Expires باید با تاریخ دقیق پر بشه اما با این تفاوت که این بار تاریخ آینده نباید باشه بلکه باید تاریخ آخرین ویرایش اون فایل یا صفحه باشه.وقتی فایل یا صفحه رو دوباره ویرایش کردید باید دوباره این مقدار به روز بشه و مرورگر اینجاست که می بینه اگر نسخه به روز فایل یا صفحه رو نداره باید دوباره صفحه رو لود و کش کنه نمونه استفاده از Last Modified:
کد:
Cache-Control:public, max-age=31536000
Last-Modified: Mon, 03 Jan 2011 17:45:57 GMT
با تعیین Last-Modified مرورگر پس از یک بار کش کردن صفحه در دفعات بعد هدری مجزا با عنوان If-Modified-Since محتوی تاریخ قبلی که خودش از مقدار Last-Modified شما ذخیره کرده رو به Request Header های صفحه مربوطه اضافه میکنه و منتظر پاسخ می مونه تا بفهمه که صفحه نسبت به تاریخ If-Modified-Since به روز شده یا نه اگر به روز شده باشه که وب سرور HTTP Code درست 200 رو پس میده اما اگر به روز نشده باشه HTTP Code عدد 304 Not Modified به معنای به روز نشده رو ارسال میشه و برای همین مرورگر متوجه میشه که باید از همون نسخه کش شده خودش استفاده کنه.
اینجا ظاهراً تعیین max-age هم به صورت پشتیبان قرار میگیره و مثل قضیه max-age و Expires این بار max-age اولویت قرار نمیگیره بلکه Last-Modified در اولویت میشه.
آخرین مورد یعنی ETag با اسم کامل Entity Tag به معنای "برچسب هویتی" مانند Last-Modified تغییرات صفحه یا فایل رو به مرورگر می فهمونه با این تفاوت که این بار از تاریخ و زمان آخرین ویرایش صفحه یا فایل استفاده نمیشه بلکه از محتوای متنی منحصر به فردی برای هر صفحه یا فایل (مثل یک MD5 Hash) برای شناسایی اون صفحه توسط سرور استفاده میشه و این بار هم مرورگر به جای رکوئست هدر قبلی If-Modified-Since که در حالت Last-Modified ارسال میکرد این بار رکوئست هدر If-None-Match رو محتوی مقدار ETag قبلی اون صفحه یا فایل که کش کرده رو به سرور ارسال میکنه و اینجا باز وب سروره که تعیین میکنه محتوای کش شده نیاز به آپدیت شدن داره یا نه و اگر نیاز نداشته باشه و کش با محتوای اصلی صفجه یا فایل تفاوتی نداشته باشه باز مثل مورد قبل HTTP Code 304 به معنای Not Modified رو ارسال میکنه.
کد:
Cache-Control:public, max-age=31536000
ETag: "15f0fff99ed5aae4edffdd6496d7131f"
و نمونه رکوئست هدری که مرورگر پس از اولین اجرای چنین صفحه ای در دفعات بعد ارسال میکنه:
کد:
If-None-Match: "15f0fff99ed5aae4edffdd6496d7131f"
ببخشید طولانی شد امیدوارم از مرجع کاملی که گذاشتید تونسته باشم ترجمه درست رو برسونم