আপনি কীভাবে উন্নয়নের সময় ক্যাচিং এড়াবেন?


31

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


দেখে মনে হচ্ছে CSS এর জন্য এটি করার জন্য বেশ কয়েকটি প্লাগইন রয়েছে । এটা কি সত্যিই প্রয়োজনীয়? এই প্লাগইনগুলি এমন কি এমন কিছু করে যা ক্লিয়ারিং ব্রাউজার ক্যাশে না করে?
cboettig

আমার ক্ষেত্রে এটি প্রমাণিত হয়েছে আমাকে ডিএনএস সরবরাহকারী (ক্লাউডফ্লেয়ার) দ্বারা তৈরি ক্যাশে সাফ করতে হয়েছিল। নীচের পরামর্শের জন্য সমস্ত ধন্যবাদ।
cboettig

আমি ক্রোম ব্রাউজার ব্যবহার করি; এর ছদ্মবেশী উইন্ডোটি কার্যকর হয় যখন আমি বিকাশের সময় ব্রাউজার স্তরের ক্যাশে সমস্যাগুলি উপস্থিত করি।
জোসেফ কুলান্দাই

আশা করি এই প্লাগইনটি আপনাকে সহায়তা করবে: wordpress.org/plugins/prevent-browser-caching
Kostya Tereshchuk

উত্তর:


32

যোগ filemtime()আপনার স্টাইলশীট সংস্করণ প্যারামিটার হিসাবে। বলতে দিন, আপনার ডিফল্ট স্টাইলশিটটি রয়েছে css/default.cssএবং css/default.min.css( নেইstyle.css )। আমরা যখন স্টাইলশিটটি নিবন্ধিত করি wp_loaded( নাinit ) তখন আমরা চতুর্থ প্যারামিটার হিসাবে কোনও সংস্করণটি পাস করতে পারি। এটি সর্বশেষ পরিবর্তিত সময় হবে এবং তাই প্রতিবার আমরা ফাইলটি পরিবর্তন করব।

$min    = WP_DEBUG ? '': '.min';
$file   = "/css/default$min.css";
$url    = get_template_directory_uri() . $file;
$path   = get_template_directory() . $file;
$handle = get_stylesheet() . '-default';

// Overridden?
if ( is_child_theme() && is_readable( get_stylesheet_directory() . $file ) )
{
    $url  = get_stylesheet_directory_uri() . $file;
    $path = get_stylesheet_directory()     . $file;
}

$modified = filemtime( $path );

add_action( 'wp_loaded', function() use ( $handle, $url, $modified ) {
    wp_register_style( $handle, $url, [], $modified );
});

add_action( 'wp_enqueue_scripts', function() use ( $handle ) {
    wp_enqueue_style( $handle );
});

আপনি যদি নোড.জেএস এবং গ্রান্ট ব্যবহার করে থাকেন তবে আমি ব্রাউজারসিঙ্কের দৃ strongly়ভাবে প্রস্তাব দিই । এটি আপনার ফাইলগুলি দেখবে এবং যখনই পরিবর্তন হবে তত্ক্ষণাত তাদের আপডেট করবে। এটি একাধিক ওপেন ব্রাউজারগুলিতে স্ক্রোলিং অবস্থান, ফর্ম জমাগুলি এবং আরও অনেক কিছু সিঙ্ক্রোনাইজ করতে পারে। খুব ঠান্ডা.


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

বিকাশের সময় আপনি কেন আপনার স্থানীয় স্টাইলশিট ব্যবহার করবেন না?
ফুসিয়া

কিছু ক্লাউড ক্যাচিং পরিষেবাগুলি আপনার ফাইলটিকে 8 ঘন্টার জন্য কঠোরভাবে ক্যাশে করবে, সুতরাং আপনাকে তাদের সংস্করণ করার জন্য আরও ভাল পরিষেবাটি প্রয়োগ করার জন্য অনুরোধ করতে হবে (কিছু এটি করেন), পরিষেবা পরিবর্তন করুন বা সেগুলি ব্যবহার বন্ধ করুন।
উইক

@cboettig ক্লাউডফ্লেয়ারে একটি ডেভ মোড সেটিংস রয়েছে যা 3 ঘন্টা উইন্ডোতে ক্যাচিং বন্ধ করবে। এটি স্বয়ংক্রিয়ভাবে 3 ঘন্টা পরে পুনরায় ক্যাচিং শুরু করে।
গিলবার্ট

7

একটি সহজ সমাধান অনুসন্ধান করার পরে অনেকবার সিদ্ধান্ত নিয়েছি যে কাজ করে এমন কিছু খুঁজে বার করুন!

সুতরাং ... এটি সম্পর্কে চিন্তা করার পরে আমি নতুন ওয়েবসাইটগুলি বিকাশ করার সময় ক্যাশে ওভাররাইড করার একটি দুর্দান্ত উপায় খুঁজে পেয়েছি ... (এবং এটি সহজ)।

আমাদের যা প্রয়োজন তা হ'ল ডব্লিউপি বলতে এটি একটি নতুন সিএসএস সংস্করণ ...

পরিবর্তনের আগে:

wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css', array(), false, 'all' );

পরিবর্তনের পরে:

wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css?v='.time(), array(), false, 'all' );

এটি আমরা যুক্ত করেছি:

?v='.time()

ব্যাখ্যা:
আমরা মূলত সিএসএস ফাইলে একটি গতিশীল সংস্করণ নম্বর যুক্ত করছি যা ব্রাউজারটিকে যখনই নতুন সিএসএস আপডেট হয় ততবার লোড করতে বাধ্য করে।

আপনার সম্পন্ন হওয়ার পরে এটি অপসারণ করতে ভুলবেন না অন্যথায় আপনার ক্যাচিং এই ফাইলটির জন্য কাজ করবে না এবং এটি ব্যবহারকারীদের বারবার ফিরে আসার জন্য লোড হবে।

এই কৌশলটি CSS এবং js ফাইলগুলির জন্য কাজ করে - আশা করি এটি সহায়তা করে;)


খুব সুন্দর, তবে আরও ভাল, কেবলমাত্র 4 র্থ প্যারামিটারে সময় () ব্যবহার করুন যা সংস্করণ। যা আপনাকে দেবে:wp_enqueue_style( 'maincss', get_template_directory_uri() . '/css/style.css', array(), time(), 'all' );
ডেভ

চতুর্থ প্যারামিটার হিসাবে সময় ব্যবহার করা ক্রোমটিকে সেই সংস্করণ ধরে রাখতে পারে। আপনি লাইভ সাইটে কাজ করার সময় যদি আপনার সমস্ত কিছু ক্যাশে করা হয় তবে এটি বিশেষত সত্য। আপনি ক্রোমে একটি "নতুন ফাইল" জমা দিচ্ছেন যা তিনি "পুরানো" সংস্করণটিকে কিছু সময়ের জন্য রাখার চেষ্টা করার পরিবর্তে ব্যবহার করবেন (অন্যান্য সংস্থার জন্য সেট হিসাবে)।
সেগিভ এসইও

নাহ, ক্রোমে ভাল কাজ করে, আমি গতকাল এটি ব্যবহার করছিলাম।
ডেভ

এর অর্থ আপনি আপনার htaccess বা প্লাগইনের মাধ্যমে ক্যাশে / মেয়াদোত্তীকরণের সময় সেট করেন নি। তবে, যাই হোক না কেন আপনার জন্য কাজ করে;)
Sagive SEO

6

এটি অত্যধিক সহজ বলে মনে হতে পারে তবে আপনার সাইটের বিকাশের অংশটি না করা পর্যন্ত কেবল ক্যাচিং অক্ষম করার বিষয়ে কীভাবে? এটি চালু এবং বন্ধ করা সহজের চেয়ে বেশি।


2
+1 - আমি ফায়ারফক্সের জন্য "ওয়েব বিকাশকারী" সরঞ্জামদণ্ড ব্যবহার করি, আপনাকে খুব দ্রুত ক্যাশে অক্ষম করতে দেয় (অন্যান্য জিনিসের মধ্যে)
শেন

ধন্যবাদ - কেবলমাত্র ব্রাউজারের ক্যাশে অক্ষম করা প্রয়োজন? ডাব্লুপি সুপার কেচে এখনও ক্যাশেড সামগ্রী সরবরাহের ফলাফল করবে? এমনকি আমার ডিএনএস পরিষেবাও ক্যাশে করে, তাই আমি যদি প্রতিটি ক্যাশে (ডাব্লুপি, ব্রাউজার, ডিএনএস, ইত্যাদি) আলাদাভাবে অক্ষম করতে পারি তবে আমি অনিশ্চিত।
cboettig

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

আমি তার সাথে আছি, কেবল এটি অক্ষম করুন, আমি যা করি তা ঠিক করে দেয়।
ম্যাট

4

আমি জানি যে এই প্রশ্নের একটি উত্তর গৃহীত হয়েছে, তবে আমি মনে করি যে উত্তরটি এখনও হাতের সমস্যার জন্য খুব জটিল, এবং ব্যবহারকারীর উপর নির্ভর করে আসলে এটি ভুল হতে পারে (যদিও কোনও অপরাধ নয়), তাই আমি ভেবেছিলাম আমি এখনও ভাগ করে নিই আমি যখন আমার ডেভ করি (তখন কেবল ওয়ার্ডপ্রেস দিয়ে নয়) কীভাবে আমি ক্যাশে বাইপাস করি।

বেশিরভাগ আধুনিক ব্রাউজারে ছদ্মবেশী মোড নামে কিছু থাকে । এই মোডে, আপনার কম্পিউটারে কোনও কিছুই ক্যাশেড নেই, তাই প্রতিটি রিফ্রেশ হ'ল সার্ভার থেকে সতেজ স্লেট ডাউনলোড করা। ইন্টারনেট এক্সপ্লোরারে আপনি টিপুন Ctrl + Shift + P। ফায়ারফক্স এবং ক্রোমে, আপনি টিপুন Ctrl + Shift + N

আপনার ব্রাউজারে যদি ছদ্মবেশী মোড না থাকে, আপনি সাধারণত Ctrl + F5IE এর জন্য বা Ctrl + Shift + Rফায়ারফক্স এবং Chrome এ চাপ দিয়ে একটি হার্ড পুনরায় লোড করতে বাধ্য করতে পারেন ।

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

প্লাগইনটি কী করে তা হ'ল ওয়ার্ডপ্রেস কীভাবে আপনার এইচটিএমএল ফাইলগুলি তৈরি করে (পিএইচপি এর মাধ্যমে), এবং একটি অনুলিপি সঞ্চয় করে, যাতে পরের বার কেউ একই পোস্ট, পৃষ্ঠা বা যা কিছু অনুরোধ করে, এটি অনুলিপিটি সরবরাহ করে, এবং এটি করতে হবে না পিএইচপি-উত্পাদিত এইচটিএমএলটিকে আবার মূল্যায়ন করুন এবং অতএব আপনার পৃষ্ঠাগুলি আরও দ্রুত লোড করে কিছু কম্পিউটিং সময় সাশ্রয় করুন। (আমি আশা করি এটি পরিষ্কার)

যে সঙ্গে সমস্যা হল, পিএইচপি ফাংশন, যে এর মাধ্যমে আপনার সিএসএস ফাইল 'URL এ একটি টাইমস্ট্যাম্প আছি slapping আপনি হয় HTML এ পিএইচপি মূল্যায়ন, এবং যে হবে ডাব্লু সুপার ক্যাশে দ্বারা ক্যাশে করা হবে। একই পোস্টে প্রতিটি অনুরোধের একই টাইমস্ট্যাম্প থাকবে কারণ ব্যবহারকারীদের মূল টাইমস্ট্যাম্প মূল্যায়নের একটি অনুলিপি সরবরাহ করা হচ্ছে। (আমি ভুল হলে শুধরে.)

বাইপাস ডাব্লু সুপার ক্যাশে 'র ক্যাশে করার সঠিক উপায় বিকল্প সেট করতে হয় Don't cache for known usersকরতে trueপ্লাগইন এর সেটিং পৃষ্ঠায়।

অবশেষে (এবং এটি ব্যক্তিগত পছন্দ হিসাবে, কোডিংয়ের ক্ষেত্রে আমি যখন সত্যই স্টিকার আছি), ছদ্মবেশী বা জোরপূর্বক শক্ত পুনরায় লোডগুলি ব্যবহার করার জন্য আপনাকে আপনার HTML পৃষ্ঠাগুলিতে অপ্রয়োজনীয় মার্কআপ যুক্ত করার প্রয়োজন হবে না। অবশ্যই, একটি টাইমস্ট্যাম্প যুক্ত করা মাত্র অনুরোধ অনুযায়ী স্থির ফাইল প্রতি প্রায় 13 বাইট যোগ করে, কিন্তু আরে, যেমন আমি বলেছিলাম, আমি এই ধরণের স্টাফের জন্য একটি স্টিলার। এটি এখনও 13 বাইট অপ্রয়োজনীয়।


দরকারী টিপস জন্য ধন্যবাদ। দুর্ভাগ্যক্রমে এখানে উত্তরগুলির কোনওটিই আমার ক্ষেত্রে সঠিক নয়, যেহেতু আমার সমাধানটির জন্য ডোমেন নেটওয়ার্ক পরিষেবা সরবরাহকারী, ক্লাউডফ্লেয়ারের ক্যাশে সাফ করা দরকার ছিল, তবে এখনও অনেকগুলি ভাল তথ্য ছিল।
cboettig

2

খোশ, এর উত্তর দেওয়ার অনেক উপায়! প্রথম এবং সর্বাগ্রে, আপনি দুটি ভিন্ন জিনিস সম্পর্কে জিজ্ঞাসা করেছেন: ডাব্লুপি সুপার ক্যাশে এবং সিএসএস ফাইল। এগুলি আলাদাভাবে, বিভিন্ন জায়গায় ক্যাশে করা হয়, সুতরাং আপনার সমস্যাটি কোথায় তা সনাক্ত করা গুরুত্বপূর্ণ।

যদি ডাব্লুপি সুপার ক্যাশে হয় তবে আপনি ডাব্লুপি সুপার DONOTCACHEPAGEক্যাশে যে কোনও কিছুকে ক্যাচ করা থেকে বিরত রাখতে বিকাশের সময় আপনার ফাংশন.ফ্পের ধ্রুবকটি সংজ্ঞায়িত করতে পারেন । প্রবর্তনের সময় এটি অপসারণ করতে ভুলবেন না!

define('DONOTCACHEPAGE', true);

আমি বিশ্বাস করি যে পৃষ্ঠার একটি নতুন সংস্করণ লোড করতে প্রতিটি সাইটের ইউআরএল সংযোজন করার জন্য একটি অনন্য কী রয়েছে যা আমি বিশ্বাস করি।

এটিকে আরও উন্নততর সমাধানের জন্য ভাঙা, আপনার একটি বিকাশ পরিবেশ এবং উত্পাদন পরিবেশ স্থাপনের কথা বিবেচনা করা উচিত, যেখানে আপনার বিকাশের পরিবেশে ডাব্লুপি সুপার ক্যাশে সক্ষম করা নেই (আবার, ধরে নিন এটি আপনার সমস্যা)।

যদি আপনার ইস্যুটি সিএসএস / জেএস ফাইলগুলির সাথে থাকে তবে টাস্কো দ্বারা উত্তর এবং উপরের m0r7if3r দ্বারা পরবর্তী মন্তব্যটি দেখুন।


1

হাইপারক্যাশ আপনি প্রশাসক হিসাবে লগ ইন করলে ক্যাচিং অক্ষম করে। ডাব্লুপি সুপার ক্যাশে একই কার্যকারিতা আছে কিনা তা নিশ্চিত নয়।


হ্যাঁ এর জন্য একটি বিকল্প রয়েছে।
ম্যাথু বয়েনেস

1

আপনি যদি ক্রোম ব্যবহার করছেন (যা আমি প্রস্তাব দিই), তদন্তকারী খুলুন, নীচের ডানদিকে কোণায় সেটিংস আইকনটি ক্লিক করুন এবং "নেটওয়ার্ক" এর অধীনে "ক্যাশে অক্ষম করুন" নির্বাচন করুন।



-1

আপনি এই স্নিপেটটি ব্যবহার করতে পারেন https://gist.github.com/jhayiwg/92bae4330aeb738a98022d7ab63ce9b1

এটি প্রতিবার আপনি পৃষ্ঠাটি লোড করার সময় আপনার সক্রিয় থিম CSS এবং জেএস এর নতুন সংস্করণ তৈরি করবে


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