القضبان التي لا معنى لها؟ طريقة LIPTEMAP دائما ترجع HTTP 200

StackOverflow https://stackoverflow.com/questions/744353

  •  09-09-2019
  •  | 
  •  

سؤال

يستخدم تطبيق Ruby On Rails رمز التحكم التالي لإنشاء ملف Sitemap.xml:

class SitemapController < ApplicationController
  layout nil

  def index
    headers['Content-Type'] = 'application/xml'
    last_post = Post.last
    if stale?(:etag => last_post, :last_modified => last_post.updated_at.utc)
      respond_to do |format|
        format.xml { @posts = Post.sitemap } # sitemap is a named scope
      end
    end
  end
end

فهمي هو أن stale? يجب أن تضمن الطريقة استجابة HTTP 304 غير المعدلة إذا لم يتغير المحتوى. ومع ذلك، كلما قمت باختبار هذا باستخدام Curl أو متصفح الويب، أحصل دائما على HTTP 200:

$ Curl - Curlhost: 3000 / sitemap.xml http / 1.1 200 اتصال موافق: تاريخ الإغلاق: Mon، 13 أبريل 2009 15:50:00 GMT آخر تعديل: الأربعاء، 08 أبريل 2009 16:52:07 GMT X- وقت التشغيل: 100 ETAG: "5FF2ED60DDCDCF291E7191E1AD540F6" Cache-Control: Private، Max-Age = 0، يجب إعادة التحقق من المحتوى: تطبيق / XML؛ Charset = utf-8 المحتوى طول: 29318

هل أنا أستخدم stale? طريقة بشكل صحيح؟ هل من الممكن اختبار هذا محليا؟

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

المحلول

من المحتمل أن يكون رمز القضبان جيدا على ما يرام ولكن حليقة لا يرسل رأس if-mind - منذ أداء الاختبار الخاص بك. من حليقة مستندات:

الظروف الزمنية

يسمح HTTP للعميل بتحديد شرط وقت للوثيقة التي يطلبها. إنه إذا تم تعديله - منذ أو إذا لم يتم تحديده - منذ ذلك الحين. تتيح لك حليقة تحديدها بعلم -z / - Cond.

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

Curl -z local.html. http://remote.server.com/remote.html.

أو يمكنك تنزيل ملف فقط إذا كان الملف المحلي أحدث من جهاز التحكم عن بعد. قم بذلك عن طريق إعداد سلسلة التاريخ مع "-"، كما هو الحال في:

Curl -z -local.html. http://remote.server.com/remote.html.

يمكنك تحديد تاريخ "نص مجاني" كشرط. أخبر Curl بتنزيل الملف فقط إذا تم تحديثه منذ يوم أمس:

Curl -z أمس http://remote.server.com/remote.html.

ثم سيقبل حليقة مجموعة واسعة من تنسيقات التاريخ. يمكنك دائما إجراء تحديد التاريخ في الاتجاه الآخر عن طريق إبطاله باندفاع "-".

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