سؤال

أرغب في الحصول على صور و CSS و JavaScript Cached من جانب العميل على متصفحهم عندما يقومون بتحميل صفحة ويب. هناك العديد من الأنواع المختلفة من التخزين المؤقت ، فأنا في حيرة من أمرهم فيما يتعلق بالأناقة التي يجب استخدامها مع ASP.NET MVC.

هل سيكون من الممكن أيضًا أن تتحقق متصفحاتها من الإصدارات الجديدة أو المعدلة من هذه الملفات؟

شكرًا!

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

المحلول

تعتني المتصفحات بهذا لك تلقائيًا ، في الواقع. عليك أن تخرج عن طريقك لحملهم على عدم ذاكرة التخزين المؤقت CSS و JS و HTML والصور.

أنا لست على دراية بـ ASP MVC ، لكنني أعتقد أنها نوع من التخزين المؤقت الذي تفكر فيه هو التخزين المؤقت من رمز OPCODE لجانب خادم الإخراج الديناميكي الذي تم إنشاؤه؟

نصائح أخرى

تحتاج إلى تعيين رؤوس التحكم في ذاكرة التخزين المؤقت على الخادم. يمكنك القيام بذلك عن طريق التمسك بهذا في الويب الخاص بك.

<system.webServer>
  <staticContent>
     <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="30.00:00:00" />
  </staticContent>
</system.webServer>

هذا من شأنه أن يخبر المتصفح الآن حتى التحقق من وجود محتوى جديد على أي شيء ثابت لمدة 30 يومًا.

لسؤالك الثاني ، قدم بعض آلية إضافة Querystring إلى المحتوى. في مشروعي الحالي ، نقوم بضغط ونجمع و JavaScript و CSS كجزء من البناء. عند وضع الروابط في الصفحة يبدو:

<script src="/Resources/Javascript/Combined.js?v=2.2.0.1901" type="text/javascript"></script>

QueryString هو الرقم الرئيسي. يحدث نفس الشيء الدقيق على أوراق الأنماط في <link> عنصر.

Paul Creasey و Salsa صحيحان على أن المتصفحات سوف تتعامل مع التخزين المؤقت افتراضيًا طالما أن الرابط هو نفسه.

كما ذكرت ، يثير هذا مشكلة عندما تحتاج إلى تحديث تلك الملفات حيث لا يوجد لديك أي ضمان بأن متصفح العميل سيتحقق من إصدار محدث. في كثير من الحالات ، يقومون بذلك فقط بعد مرور فترة محددة من الوقت والتي يمكن أن تخلق تجربة مستخدم متهالكة.

هناك عدد من الأسئلة التي تم طرحها بالفعل على هذا الموقع حول كيفية التعامل تحديث ذاكرة التخزين المؤقت. باختصار ، يعتمدون جميعًا على تغيير الرابط عند تغيير محتويات الملف.

يمكنك إلحاق معلمة بعنوان URL الذي سيتم استخدامه فقط لأغراض التخزين المؤقت مثل:

<script src="/myJavascript.js?version=4"></script>

ثم فقط قم بتغيير رقم الإصدار عند تغيير المحتويات وتحتاج إلى إجبار جانب العميل على تحديث ALA هذا الجواب.

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

يستخدم تجزئة MD5 للمحتوى نفسه في عنوان URL ، بحيث يبقى عنوان URL كما هو طول الملف هو نفسه ، وهو الهدف حقًا. حساب التجزئة سريع للغاية ، ويتم تخزينه مؤقتًا في الذاكرة على الخادم حتى لا يتم تباطؤ عرض الصفحة بشكل ملحوظ. يتم قياس كل شيء في microseconds ، والفوائد كانت (على موقعي للغواصين) رائع حتى الآن. أقوم بتطبيقه على جميع الصور و CSS و JS باستثناء الصور من داخل ملفات CSS لأنها لا يتم إنشاؤها على الخادم على موقعي (حتى الآن.)

من الأفضل القيام بذلك في IIS أو في ملف التكوين الخاص بك - تأكد من تعيين CSS/JS/الصور على عدم انتهاء صلاحيتها أبدًا.

عندما تشير إليهم من الكود الخاص بك ، أقترح إلحاق إصدار أو تاريخ بناء إلى اسم الملف ، على سبيل المثال script.js؟ 20100120 ، بحيث عندما تأتي إلى تغييرها ، تحتاج فقط إلى تغيير الإصدار من جميع المتصفحات التي خزفتها.

تتم معالجة التخزين المؤقت على جانب العميل تلقائيًا بواسطة المتصفحات عندما تكون تعيين بشكل صحيح رؤوس السيطرة ذاكرة التخزين المؤقت وتعيين web.config. مثل هذا :

<system.webServer>
    <staticContent>
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="00.00:10:00" />
    </staticContent>
</system.webServer>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top