Greasemonkey: اسمح للخادم بتسليم نص برمجي لن يتم تحديثه (تلقائيًا) أبدًا

تم إنشاؤها على ٨ فبراير ٢٠١٨  ·  18تعليقات  ·  مصدر: greasemonkey/greasemonkey

(منشور أيضًا على https://github.com/Tampermonkey/tampermonkey/issues/499)

لا تحتوي البرامج النصية على Greasy Fork على @updateURL أو @downloadURL ، لذلك عند التحقق من وجود تحديثات ، يتم استخدام عنوان URL المثبت في الأصل عند البحث عن التحديثات. هذا جيد.

يسمح Greasy Fork أيضًا للمستخدمين بتثبيت الإصدارات السابقة من البرنامج النصي. يتضمن عنوان URL للتثبيت معلمة تشير في الإصدار. في هذه الحالة ، لا تزال التحديثات "تعمل" ، ولكن لن تكون هناك أية تغييرات على الإطلاق. لحفظ بعض الموارد على جانب العميل والخادم ، أود الإشارة إلى Greasemonkey لعدم التحقق من وجود تحديثات. هل هناك شيء يمكنني وضعه في البرنامج النصي للقيام بذلك؟

التعليق الأكثر فائدة

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

يبدو معقولا.

أريد اسمًا وصفيًا أكثر ولكن ليس لدي مرشح معين أحبه حتى الآن.

ربما @updateInterval ؟

ال 18 كومينتر

<strong i="5">@updateURL</strong> about:blank + <strong i="7">@downloadURL</strong> about:blank يجب أن يفعل ذلك (على الأقل كان من الممكن إلغاء تنشيط التحديثات التلقائية باستخدام هذا في GM 3.x).

updateURL و downloadURL غير مدعومين للإصدار 4.x.

في 3.x استخدمنا فقط عناصر تحكم AOM القياسية لهذا الغرض.

في 4.x ، ليس لدينا تحديثات تلقائية على الإطلاق حتى الآن ، لذلك سيتعين علينا فقط تضمين هذا كميزة أساسية ، بمجرد قيامنا بذلك.

هل وضع <strong i="5">@downloadURL</strong> none يتوافق مع ما هو مخطط لـ 4.x؟

لقد أدركت للتو أنك تقول أنك تريد الخادم الذي يقدم البرنامج النصي أن يخبر جنرال موتورز أنه لا ينبغي أن يقوم بتحديث البرنامج النصي. (عفوًا ، لم نصل إلى نهاية الوصف تمامًا ...)

لا توجد خطط لقراءة / استخدام قيمة أي خاصية @...URL في GM 4. لا يمكنني أن أعد بأي شيء حتى تتم كتابة كود التحديث أخيرًا ، ولكن نوعًا ما من رأس HTTP يبدو أفضل من محاولة تغيير المصدر من البرنامج النصي.

OTOH إذا كان TM يدعم قيمة لا شيء ، فهناك دائمًا توافق يجب مراعاته.

يقول OP:

يتضمن عنوان URL للتثبيت معلمة تشير في الإصدار.

من هذا ، أفترض أن معلمات الاستعلام هي روابط ثابتة فعالة لنصوص مستخدم محددة. من المرجح أيضًا أن أي وظيفة تحديث تلقائي / التحقق من وجود تحديث ستستخدم downloadUrl المحفوظة داخليًا (وهو مجرد عنوان URL للتثبيت الأولي). مع الحد الأدنى من التغيير ، أعتقد أنه يمكننا دعم هذا الشكل من الارتباط الثابت عن طريق إضافة مطابقة معلمة الاستعلام عند اكتشاف البرامج النصية للمستخدم. تم ذلك عن طريق إضافة *://*/*.user.js?* إلى المستمع user-script-detect.run.js .

لقد أدركت للتو أنك تقول أنك تريد الخادم الذي يقدم البرنامج النصي أن يخبر جنرال موتورز أنه لا ينبغي أن يقوم بتحديث البرنامج النصي.

نعم بالضبط.

يبدو نوعًا ما من رؤوس HTTP أفضل من محاولة تغيير مصدر النص البرمجي

يخزن Greasy Fork البرامج النصية في DB ويعيد كتابة المصدر على أي حال (على سبيل المثال ، يولد meta.js من user.js). تغيير المصدر ليس مشكلة بالنسبة لي. قد تكون رؤوس HTTP مشكلة لأن البرامج النصية قد تمر عبر برنامج التخزين المؤقت.

من هذا ، أفترض أن معلمات الاستعلام هي روابط ثابتة فعالة لنصوص مستخدم محددة.

في لغتي اللغوية ، توفر معلمة الإصدار رابطًا ثابتًا لإصدار معين من برنامج نصي لمستخدم معين.

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

لا تستخدم Greasy Fork معلمات URL لأي غرض آخر غير الارتباط بإصدارات معينة ، لكن لا يمكنني أن أعدك بأنها لن تفعل ذلك في المستقبل ، أو أن المواقع الأخرى لا تفعل ذلك أيضًا.

بعد مزيد من التفكير: سوف يتطلب الأمر مزيدًا من الجهد لتكون متوافقًا مع المحركات المتقاطعة (

// <strong i="7">@updates</strong> never
// <strong i="8">@updates</strong> 24h
// <strong i="9">@updates</strong> 7d

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

أريد اسمًا وصفيًا أكثر ولكن ليس لدي مرشح معين أحبه حتى الآن.

* على الرغم من عدم وجود قيمة أبدًا ، يمكن أيضًا إضافة دعم <strong i="14">@downloadURL</strong> none .

من الناحية الفنية ، ينبغي أن يكون شيء. مثل @updatefrequency (طويل جدًا؟) أو @updatecycle .
ونأمل أن يكون هناك محفز لبدء فحص جميع البرامج النصية يدويًا ...

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

يبدو معقولا.

أريد اسمًا وصفيًا أكثر ولكن ليس لدي مرشح معين أحبه حتى الآن.

ربما @updateInterval ؟

أو ببساطة @updatetime ... (ليس دقيقًا جدًا ، لكنه جذاب)

@updatetime يجعلني أفكر في "الساعة 8:00 صباحًا" بدلاً من التردد.

Sxderp إذن هل ستدعم <strong i="6">@updatefreq</strong> 1d ؟

أنا لست متحدثًا أصليًا ، لكن القيمة (أي 24 ساعة) ليست ترددًا في الحقيقة. إنها فترة أو فترة ، أليس كذلك؟ 🤓

<strong i="5">@updateinterval</strong> 1day جيدًا. أود أن أوصي بعدم استخدام كلمة "فترة" لأنها تحمل معنى زائدًا في اللغة الإنجليزية الشائعة (على الرغم من أنها تحمل معنى علميًا دقيقًا)

@updateinterval غير دقيق مثل @updatetime . أنت غير مهتم بالفاصل الزمني ، لكن الفترة الزمنية (القصوى) بين التحديثات ...

أنا لا أحب حقًا انقضاء المدة ، لذلك سيكون اقتراحي التالي <strong i="5">@updatespan</strong> 1d ...

arantius ، متى ستتم جدولة التحديث التلقائي؟ لا يمكنني التبديل إلى 3.x في FF60.

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات