تحسين الـ Browser caching في Express و Node.js

يوفر موقع pingdom أدوات تعطيك تحليلاً عن موقعك وطرق تحسينه، وأحد الأمور التي واجهتني حين كنت أقيس مدونتي التي تستخدم express مع node هو أنني لا أستفيد من ال Browser caching لتخفيف الحمل على السيرفر خصوصاً حين يتعلق الأمر بالملفات الإستاتيكية التي لاتحتاج إلى تحميل نسخة جديدة منها في كل مرة تقوم بزيارة الموقع والأمر بسيط جداً في express فكل ماعليك عمله هو أن تضيف خاصية maxAge حين تقوم بتعريف مجلد إستاتيكي في express على الشكل التالي:

app.use(express.static(__dirname + '/public',{maxAge: 604800000})); //set the browser cache for one week

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


يفضل إعطاء إصدار أو أي رمز غير مستخدم في روابط الملفات الثابتة عند تفعيل التخزين المؤقت، مثل:

<link rel="stylesheet" href="/static/css/style.css?v=1">

v هنا غير مستخدم، ففي حال إجراء تغيير في الملف style.css، فيمكن إجبار المصتفح على إعادة تحميل الملف المعدل عن طريق تغير القيمة v لأي قيمة أخرى:

<link rel="stylesheet" href="/static/css/style.css?v=2">