javascript - لعرض - مشاريع جافا سكريبت




كيف يمكنني جعل المتصفح يرى تغييرات CSS وجافا سكريبت؟ (4)

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

<script type="text/javascript" src="funkycode.js?v1">

يمكنك استخدام رقم المراجعة SVN لأتمتة هذا لك عن طريق تضمين الكلمة LastChangedRevision في ملف html الخاص بك بعد ظهور v1 أعلاه. يجب عليك أيضا إعداد المستودع الخاص بك للقيام بذلك.

آمل أن يوضح هذا جوابي كذلك؟

كما يتيح Firefox الضغط على CTRL + R لإعادة تحميل كل شيء على صفحة معينة.

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

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

يمكن استخدام رقم مراجعة SVN لأتمتة هذا لك: ASP.NET SVN Revision Number

هل يمكنك تحديد كيفية تضمين متغير Revision لملف آخر؟ في ملف HTML يمكنني تضمين رقم المراجعة في عنوان URL إلى ملف CSS أو Javascript.

في كتاب Subversion يقول عن المراجعة: "هذه الكلمة تصف آخر مراجعة معروفة حيث تم تغيير هذا الملف في المستودع".

كما يتيح Firefox الضغط على CTRL + R لإعادة تحميل كل شيء على صفحة معينة.

للتوضيح ، أنا أبحث عن حلول لا تتطلب من المستخدم القيام بأي شيء من جانبه.


عندما تحرر إصدارًا جديدًا من مكتبات CSS أو JS ، تتسبب في حدوث ما يلي:

  1. تعديل اسم الملف لتضمين سلسلة إصدار فريدة
  2. تعديل ملفات HTML التي تشير إلى المكتبة للإشارة إلى الملف الذي تم إصداره

(عادة ما تكون هذه المسألة بسيطة جدًا بالنسبة إلى نص الإصدار)

الآن يمكنك ضبط Expires لـ CSS / JS لتكون سنوات في المستقبل. عندما تقوم بتغيير المحتوى ، إذا أشار HTML المشار إليه إلى عنوان URI جديد ، فلن تستخدم المستعرض بعد الآن النسخة القديمة المخزنة مؤقتًا.

يؤدي هذا السلوك التخزين المؤقت الذي تريده دون الحاجة إلى أي شيء من المستخدم.


كنت أتساءل أيضا كيفية القيام بذلك ، عندما وجدت جواب غوم. شكرا على الكود.

أنا ناضلت لفهم كيف كان من المفترض أن يتم استخدام الكود. (لا أستخدم نظام التحكم في الإصدار.) باختصار ، فإنك تقوم بتضمين الطابع الزمني (ts) عند استدعاء ورقة الأنماط. أنت لا تخطط لتغيير ورقة الأنماط في كثير من الأحيان:

<?php 
    include ('grom_file.php');
    // timestamp on the filename has to be updated manually
    include_css('_stylesheets/style.css?ts=20080912162813', 'all');
?>

وجدت أنه في حالة إلحاق آخر طابع زمني معدّل للملف على نهاية عنوان URL ، سيطلب المتصفح من الملفات عند تعديله. على سبيل المثال في PHP:

function urlmtime($url) {
   $parsed_url = parse_url($url);
   $path = $parsed_url['path'];

   if ($path[0] == "/") {
       $filename = $_SERVER['DOCUMENT_ROOT'] . "/" . $path;
   } else {
       $filename = $path;
   }

   if (!file_exists($filename)) {
       // If not a file then use the current time
       $lastModified = date('YmdHis');
   } else {
       $lastModified = date('YmdHis', filemtime($filename));
   }

   if (strpos($url, '?') === false) {
       $url .= '?ts=' . $lastModified;
   } else {
       $url .= '&ts=' . $lastModified;
   }

   return $url;
}

function include_css($css_url, $media='all') {
   // According to Yahoo, using link allows for progressive 
   // rendering in IE where as @import url($css_url) does not
   echo '<link rel="stylesheet" type="text/css" media="' .
        $media . '" href="' . urlmtime($css_url) . '">'."\n";
}

function include_javascript($javascript_url) {
   echo '<script type="text/javascript" src="' . urlmtime($javascript_url) .
        '"></script>'."\n";
}




caching