শেষ-সংশোধিত ম্যাচগুলি যদি-সংশোধিত-থেকে হয় তবে কেন অ্যাপাচি 200 ওকে পাঠায়?


10

আমি আমার ক্যাচিং কৌশল সম্পর্কিত একটি বেসিক আচরণ করার চেষ্টা করছি: ফাইলগুলি ক্যাশে করা উচিত এবং প্রতিবার সার্ভারের সাথে পুনর্নির্মাণ করা উচিত। সুতরাং আমি আপাচি 304 পিছনে পাঠাতে চাই।

প্রতিটি ব্রাউজার রিফ্রেশের জন্য সংলাপটি এখানে দেওয়া হয়:

Status Code:200 OK

Request Headers

Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
Accept-Encoding:gzip,deflate,sdch
Accept-Language:fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4
Cache-Control:max-age=0
Connection:keep-alive
Cookie: ...
Host:...
If-Modified-Since:Tue, 14 Oct 2014 15:10:37 GMT
If-None-Match:"1461-505636af08fcd-gzip"
User-Agent:Mozilla/5.0 (X11; Linux i686) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/34.0.1847.116 Safari/537.36

Response Headers

Accept-Ranges:bytes
Cache-Control:No-cache
Connection:Keep-Alive
Content-Encoding:gzip
Content-Length:1412
Content-Type:text/html
Date:Tue, 14 Oct 2014 16:58:05 GMT
ETag:"1461-505636af08fcd-gzip"
Keep-Alive:timeout=5, max=99
Last-Modified:Tue, 14 Oct 2014 15:10:37 GMT
Server:Apache/2.4.6 (Ubuntu)
Vary:Accept-Encoding

(এটি ক্রোম ডিভটোলগুলি থেকে ক্যাশে চেক করা অক্ষম করুন সহ)

আপনি দেখতে পাচ্ছেন যে প্রতিক্রিয়াতে ক্যাশে-নিয়ন্ত্রণ রয়েছে: নো-ক্যাশে শিরোনাম, এবং যদি-সংশোধন-করা শিরোনামটি সর্বশেষ-সংশোধিত সাথে মেলে। ইটাগও মেলে।

সেক্ষেত্রে আপাচি 304 প্রেরণ করা উচিত নয়?

সম্পাদনা

এর সাথে অ্যাপাচে ETags অক্ষম করা হচ্ছে

 Header  unset ETag

ক্যাচিং আচরণকে আরও অনুমানযোগ্য করে তোলে ...


আমি মনে করি Cache-Control:max-age=0ক্যাশে অক্ষম করেছে, সুতরাং আপনি Cache-Control:No-cacheপ্রতিক্রিয়াটি দেখুন।
থোরিয়ামবিআর

আমি স্পষ্টভাবে ক্যাশে-নিয়ন্ত্রণ সেট করেছি: আমার অ্যাপাচি কনফিগারেশনে নো-ক্যাশ কারণ w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.9.1 থেকে , আমি বুঝতে পারি যে এটি প্রতিটি অনুরোধের জন্য পুনর্বিবেচনার কারণ হয়। পুনরায় বৈধকরণ ফাইল পুনরায় প্রেরণ বোঝায়? আমি বলব এটি যদি 200 বা 304 হয় কিনা তা নির্ধারণ করতে এটি-সংশোধিত-ব্যবহার করা উচিত
zrz

উত্তর:


8

এটি কোনও পুরানো বাগ বলে মনে হচ্ছে , কেন Header unset ETagপার্থক্য করে তা ব্যাখ্যা করে ।

অ্যাপাচি ২.৪.০+ স্বয়ংক্রিয়ভাবে সংক্ষেপন পদ্ধতির নামটি ইটাগের সাথে সংযুক্ত করে (আপনার শিরোনামে যেমন দেখা যায়), এবং একটি 304 প্রতিক্রিয়া প্রতিরোধ করে।

Mod_deflate এর সর্বশেষতম সংস্করণগুলি একটি DeflateAlterETag সমর্থন করে যা এই আচরণটি নিয়ন্ত্রণ করতে ব্যবহার করা যেতে পারে:

DeflateAlterETag NoChange

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

1
@ বাজদাডিপি এটি বুঝতে পারে। 2.5 এরও ঠিক এটি করার একটি DeflateAlterETag Removeবিকল্প রয়েছে
ম্যাথিয়াস আর জেসেন

0

এটি অনুরোধটিতে কিছুটা বিজোড় হিসাবে দাঁড়িয়েছে:

Cache-Control:max-age=0

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

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


অনুরোধ করা ফাইলটি একটি স্ট্যাটিক এইচটিএমএল ফাইল, যার জন্য অ্যাপাচি সঠিকভাবে পরিবর্তনের সময়টি পান। (সর্বশেষ সংশোধিত: মঙ্গল, 14 অক্টোবর 2014 15:10:37 GMT)। আমি যখন ইউআরএল টাইপ করি এবং এন্টার টিপুন তখন ক্রোমের পাঠানো অনুরোধে সর্বাধিক বয়স = 0 শিরোনামটি থাকে। এটি কি পূর্ববর্তী প্রতিক্রিয়ার কারণে আছে?
zrz

আমি পড়েছি যে ক্রোম স্বয়ংক্রিয়ভাবে ক্যাশে-নিয়ন্ত্রণ যুক্ত করে: অনুরোধ করার জন্য সর্বাধিক বয়স = 0 (আপনি প্রথমবার ক্রোম লোড করার পরে, URL টাইপ করুন, এন্টার চাপুন) hit তবে এটি অন্যান্য সার্ভারগুলিকে প্রভাবিত করবে বলে মনে হচ্ছে না (সিডিএনগুলি অনুরোধে সর্বোচ্চ বয়স = 0 সহ 304 প্রেরণ করে)।
zrz

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

0

যদি আপনার সাথে অ্যাপাচি কনফিগার করা থাকে তবে অ্যাপাচি Cache-Control:No-cacheকখনই HTTP 304 Not modifiedক্লায়েন্টকে কোনও পাঠায় না ।

আপনি যদি কিছু অনুরোধ পুনরায় বৈকল্পিক করতে চান তবে Cache-Control:No-cacheকেবলমাত্র যে পৃষ্ঠাগুলিতে আপনার প্রয়োজন হবে সেখানে একটি রাখুন । আপনাকে সমস্ত সংস্থান পুনরায় বৈধ করার দরকার নেই এবং এটি করে আপনি ব্যান্ডউইথ নষ্ট করছেন।


"রিডিয়োডিট" শব্দটি দেখে আমি বিভ্রান্ত বলে মনে হচ্ছে। আমার কাছে, এর অর্থ এটি 304 কিনা তা পরীক্ষা করা means আমি কি ভুল করছি?
zrz

আপনি ভুল. পুনরায় বৈজ্ঞানিকতা হ'ল ক্লায়েন্টের কাছে সমস্ত আবার ডেটা প্রেরণ করা এবং তাকে ইতিমধ্যে একই তথ্য থাকা সত্ত্বেও তাকে পুনরায় সমস্ত কিছু পড়তে বাধ্য করা। আপনি মূলত প্রতিটি ক্লায়েন্টের উপর ক্যাশে অক্ষম করছেন।
থোরিয়ামবিআর

এটি অনেক ব্যখ্যা করে. সর্বশেষ যে বিষয়টি আমার মনে রেখে বোঝানো দরকার তা হ'ল আপাচি কিছু সংস্থার জন্য 304 প্রেরণ করে (উদাহরণস্বরূপ পিএনজি), যদিও আমার কাছে এখনও রয়েছে যে অনুরোধে ক্যাশে-কন্ট্রোল কোনও প্রতিক্রিয়াতে এবং সর্বোচ্চ-বয়স = 0 তে কোনও নো-ক্যাশে সেট করে না। কোন সুত্র ?
zrz

@ থোরিয়ামবিআর যদি আমি আপনার সঠিক ব্যাখ্যা করে থাকে তবে আপনার উভয় উত্তর এখানেই ভুল; নো-ক্যাশে (নো-স্টোরের বিপরীতে) এর অর্থ "ক্যাশে করবেন না" এর অর্থ নেই, এবং সামগ্রী পরিবর্তন না হলে 304 এ ফলাফল হতে পারে। প্রকৃতপক্ষে ওপি এটি প্রত্যাশা করেছিল তবে এটিটা ইস্যুর কারণে তা পাচ্ছে না। আবশ্যক-পুনর্বিবেচনার সাথে সম্পর্কিত কীভাবে বাসি সামগ্রী হ্যান্ডল করা হয় এবং সর্বদা "সমস্ত আবার ডেটা" প্রেরণ করে না।
নিক
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.