"বিভিন্ন: গ্রহণ করুন" এইচটিটিপি শিরোনামের কাজ কী?


93

গতিশীল ওয়েব পৃষ্ঠাগুলি উত্পন্ন করতে আমি পিএইচপি ব্যবহার করি। নিম্নলিখিত টিউটোরিয়ালে বর্ণিত (নীচের লিঙ্কটি দেখুন), মাইম টাইপের এক্সএইচটিএমএল নথিগুলিকে "অ্যাপ্লিকেশন / এক্সএইচটিএমএল + এক্সএমএল" হওয়া উচিত যখন $ $SERVER ['HTTP_ACCEPT'] এটি অনুমতি দেয়। যেহেতু আপনি একই পৃষ্ঠাটি 2 টি পৃথক MIMEs ("অ্যাপ্লিকেশন / এক্সএইচটিএমএল + এক্সএমএল" এবং "পাঠ্য / এইচটিএমএল") দিয়ে পরিবেশন করতে পারেন আপনার "ভারি" এইচটিটিপি শিরোনামটি "স্বীকার করুন" তে সেট করা উচিত। এটি প্রক্সিগুলিতে ক্যাশে সহায়তা করবে।

লিঙ্ক: http://keystonewebsites.com/articles/mime_type.php

এখন আমি অন্তর্ভুক্ত সম্পর্কে নিশ্চিত নই: শিরোলেখ ('পরিবর্তনশীল: গ্রহণ করুন'); 'ভ্যারিয়্য: অ্যাসিপট' অবিকল কি করবে সে সম্পর্কে আমি সত্যিই নিশ্চিত নই ...

আমি কেবল ব্যাখ্যাটি পেয়েছি:

কন্টেন্ট-টাইপ শিরোলেখের পরে, একটি ভেরি শিরোনাম প্রেরণ করা হয় (যদি আমি এটি সঠিকভাবে বুঝতে পারি) তবে প্রক্সি সার্ভারের মতো মধ্যবর্তী ক্যাশেগুলিকে বলুন, নথির অনুরোধকারী ক্লায়েন্টের দক্ষতার উপর নির্ভর করে নথির বিষয়বস্তুর ধরণের পরিবর্তিত হয়। http://www.456bereastreet.com/archive/200408/ কনটেন্ট_নিগোটিয়েশন /

যে কেউ আমাকে এই শিরোনামটির "সত্য" ব্যাখ্যা দিতে পারে ( সেই মান সহ )। আমি মনে করি যে আমি এই জাতীয় জিনিসগুলি বুঝতে পারি: ভেরিয়াল: স্বীকৃতি-এনকোডিং যেখানে প্রক্সিগুলিতে ক্যাশে দেওয়া পৃষ্ঠার এনকোডিংয়ের উপর ভিত্তি করে থাকতে পারে, তবে আমি বুঝতে পারি না: পরিবর্তন: গ্রহণ করুন


4
স্পষ্টত - বিরক্ত করবেন না। সেই সাইটে বাস্তবায়নের ত্রুটিগুলি বাদ দিয়ে আপনি কেবলমাত্র কোনও সময় এক্সএমএল বিষয়বস্তুর সাথে পরিবেশন করে সুবিধা পেতে যাচ্ছেন যখন আপনি এমন কাজগুলি করেন যা পাঠ / এইচটিএমএল-তে করা যায় না - এবং যদি আপনি যা কিছু করছেন তবে ডক্টিপ এবং এক্সএমএনএলস স্যুইচআউট করছে, তারপরে আপনি সেই জিনিসগুলি করছেন না। পাঠ্য / এইচটিএমএল এ লেগে থাকুন। এই বিষয়টির জন্য, আপনি সম্ভবত এইচটিএমএল 4.01 এ আঁকড়ে থাকতে পারেন।
কোয়ান্টিন

হ্যাঁ আমি এটি বুঝতে পেরেছি এবং আমার মনে হয় যে "সমস্যাগুলি" এর মতো ওয়েব বিকাশে অনেক সময় দেখা দেয়। নির্দিষ্টকরণ / আরএফসিগুলিতে "উচিত" ধন্যবাদ!
অ্যালেক্সভি

4
ভারি ব্যবহারের কথা বিবেচনা করার আগে আপনার সম্ভবত এটি পড়তে হবে: ব্লগস.এমএসএনএন / ইনটার্নালস / অর্চিভ / ২০০৯ / 06 / 17/
এরিকলও

4
এই ভিডিওটিরVary: শিরোনাম সম্পর্কে ভাল ব্যাখ্যা রয়েছে ।
কান্নান মোহন

উত্তর:


94
  • cache-controlহেডার একটি ক্যাশে প্রক্সি একটি প্রতিক্রিয়া এর "ঠাণ্ডাই" বলতে একটি HTTP সার্ভারের জন্য প্রাথমিক প্রক্রিয়া। (যেমন, কীভাবে / যদি প্রতিক্রিয়াটিকে ক্যাশে জমা করতে হয়)

  • কিছু পরিস্থিতিতে cache-controlনির্দেশিকা অপর্যাপ্ত থাকে। এইচটিটিপি ওয়ার্কিং গ্রুপের একটি আলোচনা এখানে সংরক্ষণাগারভুক্ত করা হয়েছে, এমন একটি পৃষ্ঠা বর্ণনা করে যা কেবল ভাষার সাথে পরিবর্তিত হয়। এই না হেডার পরিবর্তন হওয়ার সম্ভাবনা রয়েছে জন্য সঠিক ব্যবহারের ক্ষেত্রে কিন্তু প্রসঙ্গ আমাদের আলোচনার জন্য মূল্যবান। (যদিও আমি বিশ্বাস করি ভেরি শিরোনাম সেই ক্ষেত্রে সমস্যার সমাধান করবে, তবে আরও ভাল উপায় আছে)) পৃষ্ঠা থেকে:

Vary সার্ভারের কী করবে তার প্রতিলিপি তৈরির জন্য প্রক্সিটির জন্য হতাশ বা অত্যধিক জটিলতার ক্ষেত্রে এটি কঠোর strictly

একটি স্বীকৃত উদাহরণ:

আপনার এইচটিটিপি সার্ভারে একটি বড় অবতরণ পৃষ্ঠা রয়েছে। একই ইউআরএল সহ আপনার দুটি দুটি ভিন্ন পৃষ্ঠা রয়েছে, যদি ব্যবহারকারী আগে থাকত কিনা তা নির্ভর করে। আপনি কুকিজের উপর ভিত্তি করে অনুরোধ এবং ব্যবহারকারীর "ভিজিট কাউন্ট" এর মধ্যে পার্থক্য করতে পারেন। তবে - যেহেতু আপনার সার্ভারের ল্যান্ডিং পৃষ্ঠাটি এত বড়, আপনি মধ্যস্থতাকারী প্রক্সিগুলি যদি সম্ভব হয় তবে প্রতিক্রিয়াটিকে ক্যাশে করতে চান।

ইউআরএল, সর্বশেষ-সংশোধিত এবং ক্যাশে-নিয়ন্ত্রণ শিরোনামগুলি ক্যাচিং প্রক্সিটিতে এই অন্তর্দৃষ্টি দেওয়ার জন্য অপর্যাপ্ত, তবে আপনি যদি যোগ করেন Vary: Cookieতবে ক্যাশে ইঞ্জিনটি কুকি শিরোনামটিকে তার ক্যাচিংয়ের সিদ্ধান্তগুলিতে যুক্ত করবে।

অবশেষে, ছোট ট্র্যাফিকের জন্য, গতিশীল ওয়েব সাইটগুলি - আমি সর্বদা সহজ Cache-Control: no-cache, no-storeএবং Pragma: no-cacheপর্যাপ্ত খুঁজে পেয়েছি ।

আপনার প্রশ্নের আরও সুস্পষ্টভাবে উত্তর দিতে সম্পাদনা করুন: এইচটিটিপি অনুরোধ শিরোনাম 'স্বীকার করুন' গ্রাহক প্রক্রিয়া করতে পারে এমন সামগ্রী-প্রকারের সংজ্ঞা দেয়। যদি আপনার একই URL এ একই কন্টেন্টের দুটি অনুলিপি থাকে তবে কেবল কন্টেন্ট-টাইপেই আলাদা হয়, তবে ব্যবহার Vary: Acceptকরা উপযুক্ত হতে পারে।

আপডেট 11 সেপ্টেম্বর 12:

আমি এই দম্পতি লিঙ্কটি অন্তর্ভুক্ত করছি যা এই মন্তব্যটি মূলত পোস্ট হওয়ার পরে মন্তব্যে হাজির হয়েছে। তারা উভয়ই বাস্তব-বিশ্বের উদাহরণ (এবং সমস্যাগুলি) সহ ভেরির সাথে দুর্দান্ত উত্স: গ্রহণ করুন; যদি আপনি এই উত্তরটি পড়ছেন তবে আপনাকে সেই লিঙ্কগুলিও পড়তে হবে।

ভেরি শিরোনামের সাথে ইন্টারনেট এক্সপ্লোরারের আচরণ এবং বিকাশকারীদের সামনে এটি যে কয়েকটি চ্যালেঞ্জ উপস্থাপন করে: প্রথমটি, অসামান্য এরিকল থেকে শুরু করে, আইইর মধ্যে ভেরি হেডার ক্যাচিং প্রতিরোধ করে । সংক্ষেপে, IE (প্রাক IE9) ভেরি শিরোনাম ব্যবহার করে এমন কোনও সামগ্রীকে ক্যাশে দেয় না কারণ অনুরোধের ক্যাশে HTTP অনুরোধ শিরোনাম অন্তর্ভুক্ত করে না। এরিকল (আসল বিশ্বে এরিক লরেন্স) আইই দলের একটি প্রোগ্রাম ম্যানেজার।

দ্বিতীয়টি ইরান মেদানের, এবং ক্রোমে ভেরি-সম্পর্কিত অপ্রত্যাশিত আচরণের একটি চলমান আলোচনা: ব্যাকিং ভেরি শিরোনামটি সঠিকভাবে পরিচালনা করে না । এটি আইই এর আচরণের সাথে সম্পর্কিত, ক্রোম ডেভস বাদ দিয়ে অন্যরকম পদ্ধতি গ্রহণ করেছে - যদিও এটি ইচ্ছাকৃত পছন্দ বলে মনে হয় না।


4
Chrome এ ফিরে ব্রাউজার বোতাম সাথে এই বিষয়ে সতর্ক থাকুন, এই বাগ উপর একটি শিখা যুদ্ধ (যা এখন wontfix কিছু কারণে হয়) সাজানোর code.google.com/p/chromium/issues/detail?id=94369
Eran মেদান

6
@ ইরানমেদান ক্রোম বাগটি তখন থেকেই ঠিক করা হয়েছে।

59

Vary: Acceptসহজভাবে বলে যে Acceptঅনুরোধের শিরোনামের ভিত্তিতে প্রতিক্রিয়া উত্পন্ন হয়েছিল । একটি ভিন্ন Acceptশিরোনাম সহ একটি অনুরোধ অন্যরকম প্রতিক্রিয়া পেতে পারে।

(আপনি দেখতে পাচ্ছেন যে লিঙ্কযুক্ত পিএইচপি কোডটি দেখেছে $HTTP_ACCEPTThat's এটি Acceptঅনুরোধ শিরোনামের মান ))

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

পৃষ্ঠাটি প্রথম স্থানে ক্যাশেযোগ্য হলে এখন কেবল এটিই গুরুত্বপূর্ণ। ডিফল্টরূপে, পিএইচপি পৃষ্ঠাগুলি হয় না। একটি পিএইচপি পৃষ্ঠা নির্দিষ্ট শিরোনাম ( Expiresউদাহরণস্বরূপ) প্রেরণ করে আউটপুটকে ক্যাশেযোগ্য হিসাবে চিহ্নিত করতে পারে । তবে কীভাবে কীভাবে করা যায় তা ভিন্ন প্রশ্ন।


এটি "পেতে পারে" বা এটি "পাওয়া উচিত"?
পেসারিয়ার

6
@ পেসারিয়ার "পেতে পারে" সঠিক। Vary: Acceptএর অর্থ এই নয় যে প্রতিটি একক পৃথক পৃথক Acceptশিরোনাম মান পৃথক এবং অনন্য প্রতিক্রিয়া তৈরি করে। এর অর্থ হ'ল কোনও ভিন্ন Acceptশিরোনাম ভিন্ন প্রতিক্রিয়া তৈরি করতে পারে।
জেসন ওরেডরফ


2

শীঘ্রই শীঘ্রই (এবং ইতিমধ্যে ক্রোমে রয়েছে) উল্লেখযোগ্য সংখ্যক নতুন বৈশিষ্ট্য রয়েছে যা Varyশিরোনামকে অত্যন্ত দরকারী করে তোলে । উদাহরণস্বরূপ, ক্লায়েন্ট হিন্টিং বিবেচনা করুন । যখন চিত্রগুলির সাথে সংযোগে ব্যবহৃত হয়, উদাহরণস্বরূপ, ক্লায়েন্ট হিন্টিং কোনও সার্ভারকে নির্ভর করে যে চিত্রগুলির উপর নির্ভর করে সংস্থানগুলি:

  • চিত্র প্রস্থ
  • ভিউপোর্ট প্রস্থ
  • ব্রাউজার দ্বারা সমর্থিত এনকোডিংয়ের ধরণ (মনে করুন ওয়েবপি)
  • ডাউনলিংক (মূলত নেটওয়ার্কের গতি)

সুতরাং কোনও সার্ভার যা এই বৈশিষ্ট্যগুলিকে সমর্থন Varyকরে সেটি নির্দেশ করতে শিরোলেখ সেট করে ।

Varyপ্রতিটি অনুরোধের শিরোনামের অংশ হিসাবে "চিত্র / ওয়েবপ" সেট করে ক্রোম ওয়েবপি সমর্থনকে বিজ্ঞাপন দেয় । সুতরাং কোনও সার্ভার কোনও চিত্রকে ওয়েবপি হিসাবে পুনরায় লিখতে পারে যদি ব্রাউজার এটি সমর্থন করে, তাই প্রক্সিটির শিরোনামটি পরীক্ষা করা দরকার যাতে কোনও ওয়েবপ চিত্রকে ক্যাশে না করা যায় এবং তারপরে ওয়েবপিকে সমর্থন করে না এমন ব্রাউজারে এটি পরিবেশন করা উচিত। স্পষ্টতই, যদি আপনার সার্ভার এটি না করে তবে তাতে কিছু আসে যায় না। সুতরাং যেহেতু সার্ভারের প্রতিক্রিয়া Acceptঅনুরোধ শিরোনামে পরিবর্তিত হয় , তাই প্রতিক্রিয়াটি অবশ্যই অবশ্যই যাতে প্রক্সিগুলিকে বিভ্রান্ত না করে:

Vary: Accept

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

Vary: Accept, Width

বা কোনও ক্ষেত্রে যে কোনও সার্ভার ক্লায়েন্টকে ইঙ্গিত দেওয়ার জন্য সমস্ত ক্লিকে সমর্থন করেছে, শিরোনামটি এমন হবে:

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