إن تطوير متصفح ويب مثل Firefox ليس سهلاً كما يبدو. يتطلب فريقًا من المبرمجين المتميزين للعمل معًا لإنشاء متصفح ويب فعال وسريع ومجاني للاستخدام. بالنسبة لمتصفح الويب Firefox ، فإن أحد التحسينات الرئيسية على الأداء هو وجود عدد أقل من الملفات المجردة. منذ إصدار Firefox 4 ، يتم تجميع الكثير من الملفات ، خاصةً ملفات جافا سكريبت التي كانت موجودة في مجلد المكونات ، في ملف واحد يسمى omni.jar وهذا يقلل بشكل فعال من 30-100x قرص I / O. تمت إعادة تسمية Omni.jar إلى omni.ja منذ الإصدار 10 لمنع تلف Firefox.
تسبب هذا التحسين في حدوث بعض المشكلات لبعض المستخدمين الذين يفضلون تعديل ملفات Javascript الأساسية للتخصيص بدلاً من استخدام الوظائف الإضافية أو الإضافات. إذا كانوا يستخدمون إصدارًا أقدم من 7-Zip مثل 9.20 لفتح ملف omni.ja ، فإن 7-Zip سيبلغ عن خطأ قائلاً " لا يمكن فتح ملف omni.ja كأرشيف " على الرغم من أنه تم الإبلاغ عن أن omni ملف .ja هو في الواقع ملف مضغوط.
الحل البسيط هو إعادة تسمية امتداد ملف omni.ja إلى .zip وسوف يتمكن Windows من فتح الملفات واستخراجها. يمكنهم بعد ذلك تعديل الملفات وفقًا لاحتياجاتهم ، وإعادة حزمها في ملف ZIP ، وأخيرًا إعادة تسمية امتداد الملف إلى .ja. على الرغم من أن هذه الطريقة تعمل ، لا يوصى بها بسبب التحسين الإضافي الذي يتم إجراؤه على ملف omni.ja الأصلي الذي يمكن أن يؤدي إلى انخفاض إضافي 2-3x في القرص I / O. ملف omni.ja المحسن ليس بتنسيق ZIP قياسي لأنه تم تغيير التخطيط. عادةً ما يتم وضع الفهرس في نهاية الملف ، ولكن omni.ja محسّن يضع الفهرس في مقدمة الملف لتقليل محاولات القرص ولزيادة فوائد القراءة المستقبلية. هذا هو السبب في أن بعض برامج الأرشفة الانتقائية مثل الإصدار القديم من 7-Zip 9.20 غير قادرة على فتح omni.ja على الرغم من أنه ملف ZIP. سيؤدي تشغيل وظيفة "أرشيف الاختبار" في 7-Zip إلى أنه اكتشف وجود خطأ في الرؤوس.
لحسن الحظ أضاف مؤلف 7-Zip الدعم لفتح ملف omni.ja المحسن في أحدث إصدار. على الرغم من عدم وجود مشاكل في فتح omni.ja مع أحدث 7-Zip ، إلا أنه لا يمكن تحديث الملفات المحررة تلقائيًا. كما ترى من لقطة الشاشة أدناه ، حاولنا تحرير ملف من omni.ja و 7-Zip يطرح خطأ يقول أنه للقراءة فقط عندما يحاول تحديث الملف المحرر في الأرشيف.
سنوضح لك الآن كيفية إلغاء تحسين ملف omni.ja المحسّن بحيث يمكنك تعديل أي ملفات بسهولة من 7-Zip ثم إعادة فتحه حتى لا تفقد التخفيض الإضافي 2-3x في القرص I / O.
1. قم بتنزيل ActivePython وتثبيته. إذا كنت تقوم بتشغيل إصدار 64 بت من Windows ، فتأكد من تنزيل إصدار x64 من ActivePython.
2. قم بتنزيل النص البرمجي المحدث optizejars.py python الذي تم إصلاحه للعمل مع omni.ja
3. من أجل البساطة ، ضع ملف omni.jar وملف optimizejars.py على سطح المكتب. قم بتشغيل موجه الأوامر بالضغط على زر ابدأ ، واكتب cmd واضغط على مفتاح Enter. قم بتغيير الدليل إلى سطح المكتب بكتابة "cd desktop" ، واضغط على Enter واكتب الأمر أدناه لإلغاء تحسين ملف omni.ja.
optizejars.py - تحسين ./ ./ ./
بدلاً من ذلك ، يمكنك أيضًا نسخ ملف optimizejars.py إلى الدليل حيث يتواجد omni.ja والذي يكون عادةً في C: \ Program Files \ Mozilla Firefox \ ، ثم تشغيل موجه الأوامر كمسؤول ، قم بتغيير الدليل إلى المسار حيث omni. يقع ja وتشغيل الأمر deoptimize الموضح أعلاه. إذا حصلت على إذن تم رفض IOError 13 بعد تشغيل الأمر deoptize ، فهذا يعني أن موجه الأوامر لا يعمل كمسؤول.
بعد نجاح deoptimization ، يصبح ملف omni.ja ملف ZIP قياسي يمكن فتحه بواسطة أي برنامج أرشيفي. بعد إجراء التغييرات على الملفات داخل omni.ja ، يجب إعادة تحسين الملف مرة أخرى للحصول على فائدة أداء إضافية عن طريق كتابة أمر مختلف قليلاً كما هو موضح أدناه.
optimizejars.py --optimize ./ ./ ./
فيما يلي دليل على التحسين وإلغاء التحسين لملف omni.ja. تُظهر الصورة أدناه ملف omni.ja المحسن الأصلي الذي تم فتحه باستخدام برنامج Notepad ، وهو محرر نصوص قياسي مدمج في نظام تشغيل Windows. تُظهر بداية رأس الملف PK وهو توقيع قياسي لملف ZIP. ستجد الكثير من مسارات الملفات وهي فهارس الملفات الموجودة في الأرشيف في بداية ملف omni.ja أيضًا.
الآن دعونا نلقي نظرة على ملف omni.ja المبتكر في المفكرة. لقد مررنا إلى نهاية الملف مباشرة ، وكما ترون ، يتم وضع فهارس الملفات هنا بدلاً من ذلك وليس في البداية. إذا نظرت إلى بداية الملف ، يجب أن ترى أيضًا أنه يبدأ بـ PK.
لاحظ أنه كلما تم تحديث Firefox ، فمن المحتمل جدًا أن يتم تحديث ملف omni.ja وكذلك الكتابة فوق ملف omni.ja المعدل. هذا أحد الأسباب الرئيسية وراء ضرورة استخدام الإضافات بدلاً من تعديل ملفات Firefox الأساسية لأنها تحتفظ بالتعديل مع السماح لك بسهولة تحديث نسختك من Firefox.