المؤلف: Feng |. يمكنك إعادة الطباعة عند إعادة الطباعة، تأكد من الإشارة إلى المصدر الأصلي ومعلومات المؤلف للمقال وبيان حقوق الطبع والنشر في شكل رابط تشعبي: http://www.dbanotes.net/web/flickr_web_tech .html
كال هندرسون هو أحد مطوري موقع فليكر الشهير. في مقال بعنوان "خدمة جافا سكريبت بسرعة"، قدم تقنيات لتحسين تطبيقات موقع فليكر، وشعرت أنني استفدت كثيرًا من قراءته. "امضغ كعك الآخرين"، لخص المحتوى الرئيسي للمقال.
يعد Flickr موقعًا تمثيليًا للويب 2.0. بالإضافة إلى تحسين المحتوى الشائع في مواقع الويب العامة، يجب أيضًا أن تتعامل مشكلات الشبكة التي تواجهها بمرونة مع تعقيد النشر والتوزيع الناتج عن التغييرات المتكررة في JavaScript وCSS.
السؤال الأول الذي يتم طرحه عند تحديد استراتيجية حجم الملف هو ما إذا كان سيتم وضع كل JavaScript وCSS في ملف واحد، أو تقسيمه إلى ملفات متعددة، من منظور تقليل طلبات الشبكة، الأول أفضل والأخير أسوأ. ومع ذلك، من منظور متوازي، يمكن لكل من IE وFirefox طلب مصدرين فقط من مجال واحد في نفس الوقت بشكل افتراضي، مما يؤدي إلى تجربة سيئة للمستخدمين في كثير من الحالات - يجب تنزيل جميع الملفات على موقع Flickr يستخدم حلاً وسطًا - قم بتقسيم JavaScript وCSS إلى ملفات فرعية متعددة مع الحفاظ على عدد الملفات صغيرًا قدر الإمكان، مما يؤدي إلى تعقيد عملية التطوير، ولكن فوائد الأداء هائلة.
مشكلة تحسين الضغط ليس هناك شك في أن ضغط محتوى الموقع يعد طريقة شائعة نسبيًا لتحسين الويب. ومع ذلك، ليس من الممكن دائما تحقيق التأثير المطلوب. والسبب هو أن وحدة mod-gzip لا تستهلك موارد وحدة المعالجة المركزية من جانب الخادم فحسب، بل تستهلك أيضًا موارد وحدة المعالجة المركزية من جانب العميل، علاوة على ذلك، يتم وضع الملفات المؤقتة التي تم إنشاؤها بعد ضغط mod_gzip على القرص، مما سيؤدي أيضًا إلى حدوث مشكلات خطيرة بالنسبة للقرص IO، يتم استخدام وحدة mod_deflate المدعومة بواسطة Httpd 2.x والإصدارات الأحدث. يتم تنفيذ جميع عمليات الضغط في الذاكرة. لا يتوفر mod_deflate في Httpd 1.x، ولكن يمكنك تحسين الأداء بشكل غير مباشر عن طريق إنشاء قرص RAM.
بالطبع، mod_gzip ليس عديم الفائدة، فهو لا يزال مفيدًا للملفات المضغوطة مسبقًا. علاوة على ذلك، عند استخدام الضغط، يجب عليك أيضًا الانتباه إلى الإستراتيجية. ليست هناك حاجة لضغط ملفات الصور (توجد العديد من الصور على Flickr، و لا يمكن للضغط تحقيق الكثير من الفوائد). يقوم Flickr فقط بضغط JavaScript وCSS. يمكن للإصدارات الأحدث من mod_gzip التعامل تلقائيًا مع الملفات المضغوطة مسبقًا عن طريق تكوين خيار mod_gzip_update_static. كما أشار كال إلى أن هذه الميزة ستسبب مشكلات في بعض الإصدارات الأقدم من المتصفحات
الأخرى الضغط إحدى الوسائل الرئيسية هي ضغط المحتوى بالنسبة لجافا سكريبت، يمكنك القيام بذلك عن طريق تقليل التعليقات ودمج المسافات واستخدام بناء الجملة المضغوط والحيل الأخرى (جميع نصوص Google النصية صعبة القراءة ومضغوطة للغاية، مع وجود أفكار مماثلة بالطبع). المعالجة بهذه الطريقة قد تحتوي JavaScript على الكثير من الأقواس التي يصعب تحليلها. يستخدم Flickr Dojo Compressor لإنشاء شجرة تحليل. يتميز Dojo Compressor بحمل منخفض جدًا وشفاف للمستخدمين النهائيين، وقد تم تقديم طريقة معالجة JavaScript، ومعالجة CSS بسيطة نسبيًا من خلال استبدال التعبير العادي البسيط (مثل استبدال مسافات متعددة بحرف مسافة واحدة). نسبة الضغط إلى 50%.
تحسين التخزين المؤقت استفاد مطورو Flickr بشكل كامل من آليات Etag وLast-Modified التي تحددها مواصفات HTTP 1.1 لتحسين كفاءة التخزين المؤقت. ومن الجدير بالذكر أن Cal قدم خدعة العلامة الإلكترونية في ظل ظروف موازنة التحميل. يمكنك تعيين Apache للحصول على العلامة الإلكترونية من خلال وقت ضبط الملف وحجم الملف. افتراضيًا، يحصل Apache على العلامة الإلكترونية من خلال عقدة الملف. بالطبع، هذا ليس مثاليًا، لأنه سيؤثر على حالة التعديل منذ ذلك الحين.
الاستخدام المرن لـ mod_rewrite يقال أن تطبيق موقع Flickr يتم إنشاؤه يوميًا (Daily Build). وهذا أمر لا يمكن تصوره بدون آلية مرنة. علاوة على ذلك، في مواقع مثل Flickr، تعد مزامنة تعديلات المحتوى بمثابة صداع، وسلاحهم هو الاستخدام المرن لـ mod_rewrite. من خلال تكوين قواعد إعادة كتابة عنوان URL، يكون من السهل التبديل إلى بيئات مختلفة. يبدو الأمر بسيطًا جدًا، ولكن ما مدى سهولة القيام بذلك دون مهارات معينة في تكنولوجيا الويب؟!
ومن خلال تطبيق هذه الأساليب الرئيسية، رأينا فليكر يشبه الحلم وعالي الأداء.
راجع للشغل: نظرًا لأن Flickr ليس لديه خادم في الصين، فلا يمكن ذكر سرعة الوصول لمستخدمي البر الرئيسي :(
--End.
هذه المقالة [نصائح لتحسين تطبيقات الويب لمطوري Flickr] تأتي من dbanotes.net