যদি-কোনও পরিবর্তন না হয় তবে বনাম যদি কোনও মিল না হয়


90

যদি-সংশোধিত-পরে এবং যদি না-মিল হয় তবে তার মধ্যে পার্থক্য কী হতে পারে? আমার একটা অনুভূতি আছে যে ফাইলগুলির জন্য যদি কোনও-মিল না হয় তবে পৃষ্ঠাগুলির জন্য যদি-সংশোধিত-ব্যবহৃত হয়?

উত্তর:


113

Last-Modified/If-Modified-Sinceএবং এর মধ্যে পার্থক্য সম্পর্কে ETag/If-None-Match:

উভয়ই বিনিময়যোগ্য হিসাবে ব্যবহার করা যেতে পারে। তবে উত্সের ধরণ এবং সার্ভারে এটি কীভাবে উত্পন্ন হয় তার উপর নির্ভর করে একটি বা অন্য প্রশ্ন ("এটি কি এর পরে সংশোধিত হয়েছে ...?" / "এটি এখনও এই ইটাগের সাথে মেলে?") উত্তর দেওয়া সহজ হতে পারে ।

উদাহরণ:

  • আপনি যদি ফাইলগুলি পরিবেশন করছেন তবে ফাইলটিকে তারিখ mtimeহিসাবে ব্যবহার করা Last-Modifiedসহজ সমাধান solution
  • আপনি যদি বেশ কয়েকটি এসকিউএল কোয়েরি থেকে তৈরি একটি ডায়নামিক ওয়েব পৃষ্ঠা পরিবেশন করে থাকেন, তবে এই প্রশ্নের যে কোনওটির দ্বারা ফিরে আসা ডেটা পরিবর্তিত হয়েছে কিনা তা যাচাই করা অবাস্তব হতে পারে (যদি না তাদের সকলেরই "শেষ বারের পরিবর্তিত" কলামটি থাকে)) এক্ষেত্রে পৃষ্ঠা সামগ্রীর যেমন একটি এমডি 5 হ্যাশ ব্যবহার ETagকরা অনেক সহজ হবে।
    ওটো, এর অর্থ হ'ল আপনাকে এখনও সার্ভারে পুরো পৃষ্ঠাটি তৈরি করতে হবে, এমনকি শর্তাধীন জিইটি-র জন্যও। ইটাগের (প্রাইমারি কী, রিভিশন নম্বর, ... ইত্যাদি) ঠিক কী যেতে হবে তা নির্ধারণ করা আপনাকে এখানে অনেক সময় বাঁচাতে পারে।

এই বিষয়ে আরও তথ্যের জন্য এই লিঙ্কগুলি দেখুন:


আমি ব্রাউজারটি একটি ইটাগ প্রেরণ করেছি, তবে এটি কখনও কখনও ইফ-নন-ম্যাচের অনুরোধ করে না। কী সমস্যা হতে পারে?
পেসারিয়ার

4
@ স্পেসিয়ার: ব্রাউজারগুলির ইটাগ ব্যবহার করার প্রয়োজন নেই। সুতরাং এটি কোনও পুরানো ব্রাউজার হতে পারে এবং কেবল এটিকে এড়ানো যায়। অন্য সম্ভাবনাটি হ'ল url পরামিতিগুলির মাধ্যমে সত্তা অ্যাক্সেস করা হচ্ছে যা কল থেকে কল থেকে পরিবর্তিত হয়। যদি সত্তার নাম পরিবর্তন হয় তবে বিভিন্ন অনুরোধের জন্য এটাগ ব্যবহার করা হবে না।
রাফায়েল ব্যাপটিস্টা

@ রাফায়েলব্যাপ্টিসা আপনার মন্তব্যের দ্বিতীয়ার্ধের আরও বিশদটি জানাতে বলুন আমার এই অবস্থাটি রয়েছে: আমার একটি ফাইল সার্ভার রয়েছে এবং সার্ভারটি ইটি্যাগগুলি ব্যবহার করে সংস্করণ সমর্থন করে এবং পিছনের সামঞ্জস্যতার কারণে, আমাদের ক্লায়েন্টরা আমার ক্যোয়ারী প্যারামিটারটি ব্যবহার করত আমার_কন্টার_ভার্সন = (সংস্করণ) )। আমি যদি আমার_সামগ্রী_বর্তনের জন্য বিভিন্ন মান সহ একটি এইচটিটিপি অনুরোধটি প্রেরণ করি তবে ইটিগগুলিও, তবে একটি নতুন অনুশীলন পরিবেশন করবেন বা 304 ফেরত প্রেরণ করবেন কিনা তা নির্ধারণ করার সময় কোন মানদণ্ডকে অগ্রাধিকার দেওয়া হবে? ধন্যবাদ!
হাসছে_মান

4
সার্ভার কীভাবে ইটাগ ব্যবহার করে তা সার্ভারের উপর নির্ভর করে। আপনি যদি পুনরায় লেখার নিয়মগুলির মাধ্যমে চান তবে আপনি সম্ভবত বেশিরভাগ ফাইল সার্ভারকে ইটাগের সাথে পরামিতিগুলি উপেক্ষা করার জন্য কনফিগার করতে পারেন। ব্রাউজার - ক্লায়েন্টের উপর আপনার নিয়ন্ত্রণ কম রয়েছে। বেশিরভাগ কোনও এ্যাট্যাগ শিরোনাম প্রেরণ করবে না যা তারা অন্যের জন্য অনুরোধে প্যারামিটারগুলির একটি সেটের জন্য পেয়েছিল। চিত্রের জন্য ক্লায়েন্টের অনুরোধ? V = 1 চিত্রের জন্য একই ইটাগ প্রেরণ করবে না? V = 2। আমি যদি নিজের সার্ভারগুলি লিখছিলাম তবে আমি চিত্রের সামগ্রীর হ্যাশ হিসাবে ইটাগ প্রয়োগ করব। যে কোনও ইউআরএল একটি সংস্থান সম্পর্কে জিজ্ঞাসা করে, এবং এমন ইমটাগের সাথে আসে যা আমি প্রেরিত ইমেজের হ্যাশের সাথে মেলে, আমি 304 ফিরে আসি
রাফায়েল ব্যাপটিস্ট

22

If-Modified-Sinceতুলনা করা হয় Last-Modifiedযেখানে If-None-Matchসাথে তুলনা করা হয় ETag। উভয় Modified-Sinceএবং ETagএকটি উত্স একটি নির্দিষ্ট বৈকল্পিক সনাক্ত করতে ব্যবহার করা যেতে পারে।

কিন্তু তুলনা If-Modified-Sinceকরতে Last-Modifiedআপনি তথ্য কিনা ক্যাশে বৈকল্পিক দেয় পুরোনো বা নতুন যেহেতু তুলনা If-None-Matchকরতে ETagশুধু আপনার তথ্য উভয় কিনা দেয় অভিন্ন বা না। তবুও বেশিরভাগ ETagজেনারেটরগুলির মধ্যে সিস্টেম নির্দিষ্ট নির্দিষ্ট ইনোডের তথ্য অন্তর্ভুক্ত থাকে সুতরাং কোনও ফাইলকে অন্য ড্রাইভে স্থানান্তরিত করার পাশাপাশি এটিও পরিবর্তন করতে পারে ETag


আকর্ষণীয়, তবে কেন আমি "সর্বশেষ পরিবর্তিত" চেকগুলির উপরে "অভিন্ন" চেকগুলি ব্যবহার করব? লাভ কি কি? যদি একটির কাছে ফাইল দেওয়ার জন্য থাকে তবে কোনটি আরও ভাল বিকল্প?
টাওয়ার

7
কম্পিউটার সহ, সময় নাজুক। লিপ সেকেন্ড, দিনের আলোর সঞ্চয়ের সময় এবং ভুল ঘড়ির মধ্যে স্যুইচিংয়ের ফলে সমস্ত "শেষবারের পরিবর্তিত" পরীক্ষার ভুল ফলাফল ফিরে আসতে পারে। সামগ্রীটি নিজেই তুলনা করা (বা সামগ্রীর MD5 হ্যাশ) এই সমস্যাগুলি এড়িয়ে চলে।
দেবদানকে

তবুও আমি @ ডিভডানকে পুরোপুরি বুঝতে পেরেছি, আমি বলব যে এমডি 5সাম চেক করার চেয়ে টাইমস্ট্যাম্প চেক করা অনেক দ্রুত। এই শিরোনামগুলির উদ্দেশ্য এটি দ্রুত করা, কখনও কখনও I / O দিয়ে সার্ভার লোড করার চেয়ে ক্লায়েন্টের কাছে সত্তার নতুন সংস্করণ স্থানান্তর না করা পছন্দ করা হয়। যাইহোক, ব্যবহারকারী সর্বদা সিটিআরএল + শিফট + আর (বা সিআরটিএল + এফ 5 বা যাই হোক না কেন) টিপতে পারেন
শোকের

13

সর্বশেষ-পরিবর্তিত / যদি-সংশোধিত-তে ব্যবহৃত টাইমস্ট্যাম্প মানটি যথাযথভাবে সীমাবদ্ধ করে থাকে - এক সেকেন্ড এবং এটি দ্রুত পরিবর্তিত সামগ্রীর জন্য কেবল পর্যাপ্ত নয়, উদাহরণস্বরূপ, ওয়েব চ্যাট অ্যাপ্লিকেশন যেখানে কোনও নির্দিষ্ট সেকেন্ডে একাধিক বার্তা পোস্ট করা যেতে পারে । ETag / If-No-Match এই সমস্যাটি সমাধান করতে সহায়তা করতে পারে।


10

যেমনটি গুগলের সেরা অনুশীলনে বর্ণিত হয়েছে:

সমস্ত ক্যাশেযোগ্য সংস্থার জন্য মেয়াদ উত্তীর্ণ বা ক্যাশে-নিয়ন্ত্রণ সর্বোচ্চ-বয়সের মধ্যে একটি এবং সর্বশেষ-পরিবর্তিত বা ইটাগের একটি নির্দিষ্ট করা গুরুত্বপূর্ণ। মেয়াদপূর্তি এবং ক্যাশে-নিয়ন্ত্রণ: সর্বাধিক বয়স, বা সর্বশেষ-সংশোধিত এবং ইটাগ উভয়ই নির্দিষ্ট করা বাড়াবাড়ি।

https://developers.google.com/speed/docs/best-practices/casing


সেই ইউআরএলটির আর সেই মতো পাঠ্য নেই। ব্যবহারের বিরুদ্ধে কোন সীমাবদ্ধতা Last-Modifiedসঙ্গে ETag(বা useragent পাশ, If-Modified-Sinceসঙ্গে If-None-Match) উল্লেখ করা হয়। একইভাবে ডাব্লু 3 অনুষঙ্গ আপনাকে সীমাবদ্ধ করে না। এটা ব্যবহার করা না বলছেন If-Modified-Sinceসঙ্গে If-Match, কিন্তু আমি অনুমান যে কারণ নথি হিসাবে ETag দ্বারা সংজ্ঞায়িত যে তারিখ কিন্তু একই বিষয়বস্তু আপডেট করেছি সেট বেশ ছোট হতে হবে।
এমপ্যাগ

5

যদি-সংশোধিত-যেহেতু একটি তারিখ ব্যবহার করে, অন্যদিকে -যদি-না-ম্যাচ একটি ETag ব্যবহার করে । এগুলি উভয়ই "পৃষ্ঠাগুলি" (যেমন এইচটিএমএল) এবং অন্যান্য ফাইলগুলির জন্য ব্যবহার করা যেতে পারে।


3

সার্ভার দ্বারা দুর্বল হিসাবে বর্ণিত না হলে, একটি ইট্যাগকে শক্তিশালী বৈধ প্রমাণকারী হিসাবে বিবেচনা করা হয় এবং এটি শর্তসাপেক্ষে অনুরোধটিকে সন্তুষ্ট করতে ব্যবহার করা যেতে পারে। যাইহোক, সর্বাধিক স্বয়ংক্রিয়ভাবে উত্পন্ন ETags সার্ভার ফার্ম পরিস্থিতিতে অসুবিধা প্রদর্শন করে, যেহেতু তারা প্রায়শই ইনোড তথ্য এবং / অথবা একটি অনন্য ধ্রুবক কাউন্টার ব্যবহার করে। অনুশীলনে, আমি সর্বশেষ সংশোধিত শিরোনামটি মোটামুটি স্থিতিশীল সামগ্রীর জন্য যথেষ্ট হিসাবে খুঁজে পেয়েছি, উদাহরণস্বরূপ সুরক্ষিত স্ট্যাটিক বিষয়বস্তু পরিবেশন করা, যেহেতু ফাইলটির লেখার সময়টি যুক্তিসঙ্গতভাবে ভাল বৈধকরণকারী করে।

ইটাগ এখন পর্যন্ত সবচেয়ে নমনীয়। কনফার্মিং ক্লায়েন্টদের শর্তাধীন অনুরোধে ইটাগ প্রেরণ করা প্রয়োজন, যেখানে তারা উপলব্ধ থাকলে উভয়ই প্রেরণ করতে হবে।


0

ব্রাউজারটি সর্বশেষে অনুরোধ করা সংস্থানটি প্রাপ্ত সময় নির্দিষ্ট করতে যদি-সংশোধিত-যেহেতু শিরোনাম ব্যবহৃত হয়। ইফ-নন-ম্যাচ শিরোনামটি সর্বশেষ প্রাপ্তির সময় অনুরোধকৃত উত্স দিয়ে সার্ভার জারি করা সত্তা ট্যাগ নির্দিষ্ট করতে ব্যবহৃত হয়।

বর্ণিত দুটি উপায়ে, এই শিরোলেখগুলি ব্রাউজারের মধ্যে সামগ্রীর ক্যাচিং সমর্থন করার জন্য ব্যবহৃত হয় এবং তারা সার্ভারকে সক্ষম করে যে ব্রাউজারটিকে কোনও উত্সের ক্যাশেড অনুলিপি ব্যবহার করার নির্দেশ দেয়, পরিবর্তে যদি এটি হয় তবে সামগ্রীর সম্পূর্ণ সামগ্রীর সাথে প্রতিক্রিয়া জানাতে হবে জরুরী না.

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.