vchuravy
(Valentin Churavy)
12 سبتمبر 2023، 6:12م
1
لدي سؤال عام حول كيفية تنفيذ تحديد سرعة الزاحف.
وفقًا لـ https://support.google.com/webmasters/answer/48620?hl=en، فإن رمز الحالة HTTP الموصى به هو 429 (طلبات كثيرة جدًا) أو 503 (الموقع غير متاح).
ولكن عند قراءة الكود المصدري، يبدو أن تحديد السرعة يتم تنفيذه عن طريق
إلقاء خطأ: discourse/lib/rate_limiter.rb at 85fddf58bc1e751d0ac5b8192a630c59a34aed7d · discourse/discourse · GitHub
لقد ولت أيام Ruby on Rails بالنسبة لي، ولكني أفترض أن هذا يثير خطأ 505 عامًا؟
زاحف Google لا يفهم تمامًا تحديد سرعة Discourse وفي Google Search Console يمكنني رؤية أن الفهرسة لدينا وبالتالي الانطباعات انخفضت بشكل كبير بعد تنفيذ تحديد السرعة، ولكن ليس بسبب تحديد السرعة، ولكن بسبب أخطاء الخادم 5xx.
أتفهم أن حالات تحديد السرعة قد تكون ضرورية في بعض الأحيان إذا كانت تسبب الكثير من حركة المرور، ولكني كنت أتوقع أن يقوم Discourse بالإبلاغ عن HTTP 429، بدلاً من تقديم خطأ داخلي 505 للزاحف.
إعجاب واحد (1)
Falco
(Falco)
12 سبتمبر 2023، 6:15م
2
أعتقد أن ما تبحث عنه هو
rescue_from RateLimiter::LimitExceeded do |e|
retry_time_in_seconds = e&.available_in
response_headers = { "Retry-After": retry_time_in_seconds.to_s }
response_headers["Discourse-Rate-Limit-Error-Code"] = e.error_code if e&.error_code
with_resolved_locale do
render_json_error(
e.description,
type: :rate_limit,
status: 429,
extras: {
wait_seconds: retry_time_in_seconds,
time_left: e&.time_left,
},
headers: response_headers,
)
end
end
وهو “الإنقاذ” العام لوحدة التحكم لهذا الخطأ الذي يحدد رمز الحالة.
إعجاب واحد (1)
vchuravy
(Valentin Churavy)
12 سبتمبر 2023، 6:21م
3
شكرًا! هذا مطمئن، ولكنه لا يفسر تمامًا سبب إبلاغ Google Search Console عن أخطاء 5xx التي تتزامن مع لحظة تطبيق تحديد المعدل.
حتى أنه يبلغ عن عدم قدرته على جلب discourse sitemap.xml
vchuravy
(Valentin Churavy)
12 سبتمبر 2023، 6:34م
4
يبدو أن تحديد معدل sitemap.xml على وجه الخصوص يمثل مشكلة.
أفترض أن هذا هو ما تسبب في فجوة التغطية. يمكنني أن أصدق أن جوجل أبلغت عن 429 بشكل خاطئ على أنه 5xx.
إعجاب واحد (1)