كيفية تكوين mod_rewrite لخدمة مصغر الملفات ، إذا كانت متوفرة ؟

StackOverflow https://stackoverflow.com/questions/243124

  •  04-07-2019
  •  | 
  •  

سؤال

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

لذلك نحن في نهاية المطاف مع بنية الدليل التالي في مكان ما داخل DocumentRoot:

/
   /js
      /min
         foo-min.js
         bar-min.js
      foo.js
      bar.js
      quux.js
   /css
      ...

الآن ما علينا هو أن أباتشي خدمة الملفات من مين دليل فرعي ، و تراجع لخدمة ملفات مضغوطة, إذا كان مصغر الإصدارات غير متوفرة.العدد الأخير هو واحد أنا لا يمكن أن تحل.

على سبيل المثال:لنفترض أن لدينا طلب example.com/js/foo.js — في هذه الحالة أباتشي إرسال محتويات /js/min/foo-min.js.لا يوجد مصغر quux.js, لذا طلب /js/quux.js يعود /js/quux.js نفسها وليس 404.أخيرا, إذا كان هناك أي /js/fred.js, ، يجب أن ينتهي مع 404.

في الحقيقة انا إعداد وبناء البرامج النصية في مثل هذه الطريقة التي unminified الملفات لم يتم نشر على خادم الإنتاج ، ولكن هذا التكوين لا يزال قد تكون مفيدة على تكامل server على تطوير الآلات.

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

المحلول

هنا هو التكوين التي عملت أخيرا:

/js/.htaccess:

RewriteEngine On

RewriteBase /js

RewriteCond %{REQUEST_URI} ^/js/((.+)\.js)$
RewriteCond %{DOCUMENT_ROOT}/js/min/%2-min.js -f
RewriteRule ^(.+)$ min/%2-min.js [L]

نفسه css الدليل.

نصائح أخرى

يمكنك استخدام RewriteCond للكشف عن وجود مصغر الملف:

RewriteCond %{REQUESTURI} ^/js/(.*\.js)
RewriteCond js/min/%1 -f
RewriteRule %1 min/%1 [L]

هل من الممكن تغيير البنية النصية ؟ إذا كان الأمر كذلك, يمكنك تكوين لهم صغر الملفات ومنحهم نفس اسم الملف ، ولكن فقط عندما السليم العلم مثلا ، ant productionDeploy بدلا من ant integrationDeploy.أن طريقة تصغير الحجم العملية شفافة تماما في كل شيء إلا البناء النصي.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top