আমি HTTP ক্যাচিং ব্যবহার করার চেষ্টা করছি। আমার নিয়ামকটিতে আমি নিম্নরূপ প্রতিক্রিয়া সেট করছি:
$response->setPublic();
$response->setMaxAge(120);
$response->setSharedMaxAge(120);
$response->setLastModified($lastModifiedAt);
দেব মোড
দেব পরিবেশে প্রথম প্রতিক্রিয়া হ'ল 200 এর সাথে নিম্নলিখিত শিরোনাম:
cache-control:max-age=120, public, s-maxage=120
last-modified:Wed, 29 Feb 2012 19:00:00 GMT
পরবর্তী 2 মিনিটের জন্য প্রতিটি প্রতিক্রিয়া নিম্নলিখিত শিরোনাম সহ 304 হয়:
cache-control:max-age=120, public, s-maxage=120
এটি মূলত আমি যা প্রত্যাশা করি তা।
প্রোড মোড
প্রোড মোডে প্রতিক্রিয়া শিরোনামগুলি পৃথক। নোট করুন যে app.php এ আমি অ্যাপ্লিকেশানে কার্নেলটি গুটিয়ে রেখেছি।
প্রথম প্রতিক্রিয়া নিম্নোক্ত শিরোনাম সহ 200 টি:
cache-control:must-revalidate, no-cache, private
last-modified:Thu, 01 Mar 2012 11:17:35 GMT
সুতরাং এটি একটি ব্যক্তিগত নো-ক্যাশে সাড়া।
প্রতিটি পরবর্তী অনুরোধটি আমি যা আশা করব তা প্রায় অনেকটাই; নিম্নলিখিত শিরোনাম সহ একটি 304:
cache-control:max-age=120, public, s-maxage=120
আমি এটা সম্পর্কে চিন্তা করা উচিত? এটা কি প্রত্যাশিত আচরণ?
আমি যদি এর আগে ওয়ার্নিশ বা আকামাই সার্ভার রাখি তবে কী হবে?
আমি কিছুটা ডিবাগিং করেছি এবং আমি বুঝতে পেরেছি যে শেষ পরিবর্তনিত শিরোনামের কারণে প্রতিক্রিয়াটি ব্যক্তিগত। ক্যাচড রেসপন্স ( এইচটিটিপিচী :: হ্যান্ডেল () পদ্ধতি) আপডেট করার জন্য এইচটিটিপিচ কার্নেল EsiResponseCacheStrategy ব্যবহার করে ।
if (HttpKernelInterface::MASTER_REQUEST === $type) {
$this->esiCacheStrategy->update($response);
}
EsiResponseCacheStrategy কোনও প্রতিক্রিয়াটিকে নন-ক্যাশেয়ায় পরিণত করে যদি এটি লাস্ট-রেসপন্স বা ইটাগ ( এসিআরেস্পোনসক্যাচস্ট্রজি :: অ্যাড () পদ্ধতি) ব্যবহার করে:
if ($response->isValidateable()) {
$this->cacheable = false;
} else {
// ...
}
প্রতিক্রিয়া :: লাস্ট-রেসপন্স বা ইটাগ শিরোনাম উপস্থিত থাকলে ভ্যালিডিয়েটেবল () সত্য দেয়।
এটি ক্যাশে-নিয়ন্ত্রণ শিরোনাম ( EsiResponseCacheStrategy :: আপডেট () পদ্ধতি) ওভাররাইটিংয়ের ফলস্বরূপ :
if (!$this->cacheable) {
$response->headers->set('Cache-Control', 'no-cache, must-revalidate');
return;
}
আমি এই প্রশ্নটি সিমফনি 2 ব্যবহারকারী গোষ্ঠীতে জিজ্ঞাসা করেছি তবে আমি এখন পর্যন্ত কোনও উত্তর পাইনি: https://groups.google.com/d/topic/symfony2/6lpln11POq8/discussion
হালনাগাদ.
যেহেতু আমার আর মূল কোডটিতে অ্যাক্সেস নেই সেহেতু আমি সর্বশেষ সিমফনি স্ট্যান্ডার্ড সংস্করণ দিয়ে দৃশ্যটি পুনরুত্পাদন করার চেষ্টা করেছি ।
প্রতিক্রিয়া শিরোনামগুলি এখন আরও সুসংগত তবে তবুও এটি ভুল বলে মনে হচ্ছে।
আমি Last-Modified
প্রতিক্রিয়াটিতে শিরোনাম সেট করার সাথে সাথেই ব্রাউজারের প্রথম প্রতিক্রিয়াটিতে একটি রয়েছে:
Cache-Control:must-revalidate, no-cache, private
দ্বিতীয় প্রতিক্রিয়া একটি প্রত্যাশিত আছে:
Cache-Control:max-age=120, public, s-maxage=120
যদি আমি If-Modified-Since
শিরক পাঠানো এড়ায় তবে প্রতিটি অনুরোধ ফিরে আসে must-revalidate, no-cache, private
।
এটা কোন ব্যাপার না যদি অনুরোধ করে করা হয়েছে prod
বা dev
আর পরিবেশ।
app.php
এবং app_dev.php
একই? (ডিবাগ এবং env উপেক্ষা করে)
debug=>true
পেতে যাতে আপনি অ্যাপক্যাচে getOptions () সেট আপ করতে পারেন X-Symfony-Cache
?