كيفية تكوين mod_rewrite لخدمة مصغر الملفات ، إذا كانت متوفرة ؟
-
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
.أن طريقة تصغير الحجم العملية شفافة تماما في كل شيء إلا البناء النصي.