سؤال

ما هي الطريقة الجيدة لإنشاء علامة إلكترونية لصفحات الويب برمجيًا، وهل يوصى بهذه الممارسة؟توصي بعض المواقع بإيقاف تشغيل العلامات الإلكترونية، ويوصي البعض الآخر بإنتاجها يدويًا، ويوصي البعض الآخر بترك الإعدادات الافتراضية نشطة - ما هي أفضل طريقة هنا؟

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

المحلول

وETags لا تساعد عند استخدام نوع من آلية التخزين المؤقت أمام موقع الويب الخاص بك مولد. المتصفحات أنفسهم لم تستخدمها، كانوا يستمعون إلى "(لو) تعديلها منذ" أو "عمر" البنيات رأس، AFAIK.

وعلى أي حال، نظرا لطبيعتها البسيطة التي لا توجد مشكلة لتوفير HTTP-رأس مع ETAG. سمعت أن العديد من خوادم الويب ببساطة تأخذ موقع الملف والطابع الزمني للملف والقيام MD5-التجزئة على هذه البيانات.

ونحن، على سبيل المثال، وبنى إيتاغ بسيطة لكنها فعالة مع برنامجنا. كل "وحدة المحتوى" (أي أتش تي أم أل، صور JPEG، صور متحركة ...) في مجال البرمجيات لديها معرف فريد ورقم الإصدار (أي الحياة السياسية في فرنسا لديه معرف "17" ونسخة "2"، وهذا يعني تم تغييره مرة واحدة) . لذلك إيتاغ ببساطة هو سلسلة "معرف الإصدار"، وهنا: "17-2". مع التغيير القادم سيكون "17-3" بحيث يتعرف cacher التغيير، يحمل الجزء محتوى جديد (مرة واحدة) تماما ويخزنها في ذاكرة التخزين المؤقت هو نفسه.

ولكن ربما كنت قد تستخدم URL وطابع زمني (أي الطابع الزمني للملف) أيضا.

نصائح أخرى

وأوصي توليد تجزئة المحتوى، على سبيل المثال، md5($content).
بالإضافة إلى ذلك، لمنع تجزئة الاصطدام، قد ترغب في إضافة على سبيل المثال معرف عنصر المحتوى إليه (إذا كان ذلك مناسبا).

حسنًا، تكون علامات ETag منطقية عندما تعتمد بشكل كبير على التخزين المؤقت.إنها مؤشر رائع لحالة المورد (على سبيل المثال.عنوان URL).

على سبيل المثال، لنفترض أنك تستخدم اياكس طلب سحب أحدث تعليقات المستخدم وتريد معرفة ما إذا كان هناك أي تعليقات جديدة.تغيير ETag إلى يُحذًِر يعد تطبيقك للمحتوى الجديد طريقة أقل تكلفة للتحقق من ذلك.

لأنه إذا كانت ETag هي نفسها، فيمكنك الاحتفاظ بذاكرة التخزين المؤقت الخاصة بك، ولكن بخلاف ذلك يمكنك إعادة بنائها.

تعتبر ETags أيضًا منطقية جدًا مع واجهات برمجة تطبيقات RESTful.

أما بالنسبة لتوليدها، والنظر في المواصفات, أعتقد أنه يمكنك فعل أي شيء تريده تقريبًا.الطابع الزمني، والتجزئة، وكل ما هو منطقي بالنسبة لك/للتطبيق الخاص بك.

وأنا أطلقت للتو YSlow واشتكى Etags، لذلك فعلت القليل من البحث. هذه القضية، وفقا ل ياهو بلوق (انظر التعليقات أيضا) هو أن تطبيقات الافتراضي ETags تستخدم ملف رقم inode أو NTFS رقم المراجعة أو soemthing آخر بالتساوي ملقم معين كجزء من التجزئة. هذا، في حين يجري بسرعة، ويمنع أساسا نفس الملف يخدمه 2 خوادم مختلفة من وجود نفس ETAG ومسامير يصل كل من المتصفحات ومخابئ المصب أو أرصدة الحمل.

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

لنفسي، لأن أنا في بيئة بسيطة حيث الطابع الزمني ملف ستكون أكثر من كافية، التفت فقط أجبرتها على الفرار في Apache باستخدام FileETag none في ملف htaccess الخاص بي. هذا يغلق حتى YSlow، وينبغي جعل الامور تعود الى تاريخ آخر تعديل على الملف.

وعموما، فإن "المواقع" التي تثبط استخدامها لياهو، وذلك لأن بعض خوادم الشبكة الافتراضية لا تخلق ETAGs التي تعمل في مزارع الخوادم تلقائيا. (والذي هو الصحيح والدقيق لYahoo إلى المطالبة).

ولكن، إذا كان لديك خادم الويب واحد، من أنك بخير. إذا لم يكن كذلك، فأنت تريد أن تحقق حتى على كيفية معالجة خادم الويب الخاص بك هذا والتصرف بشكل مناسب.

وMufasa،

وياهو (وYSlow) في الواقع تشجيع استخدامها، ولكن مع التحذير من أن ETags الذي تم إنشاؤه تلقائيا سوف تختلف من خادم إلى خادم.

لا أستطيع أن أصوت ذلك بعد أنا أقول وأنا أتفق مع اقتراح تجزئة من مسار الملف والطابع الزمني (أو اسم الجدول + قيمة الحقل الأولية + الطابع الزمني إذا يمثله محتوى ديسيبل).

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