- Yii2 Framework
-
Introduction & Setup
- Introduction to Yii2 Framework
- Installing Yii2 (Basic & Advanced Templates)
- Understanding Yii2 Directory Structure
- Yii2 Configuration Basics
- Routing & Pretty URLs in Yii2
-
Yii2 Core Concepts
- Yii2 Application Bootstrapping & Lifecycle
- Understanding Yii2 Request & Response Handling
- Working with Yii2 Components & Helpers
- Yii2 Widgets & Using Built-in Widgets
- Yii2 Helpers & Utility Classes
-
Models & Database Operations
- Yii2 Models, Active Record & Database Connections
- CRUD Operations in Yii2
- Yii2 Query Builder & DAO (Direct SQL Queries)
- Handling Relationships in Yii2 Active Record
- Yii2 Migrations & Seeding
-
Views, Layouts & Themes
- Yii2 Views & Layouts
- Yii2 Asset Bundles & Asset Management
- Integrating Bootstrap in Yii2
- Yii2 Theme Integration
- Yii2 Custom Widgets & Reusable Components
-
Forms, Validation & Data Presentation
- Yii2 Forms & Validation
- Using Yii2 GridView & ListView Widgets
- Yii2 Pagination & Sorting
- Yii2 File Uploads
-
Security & User Management
- User Authentication in Yii2
- Role-Based Access Control (RBAC) in Yii2
- Yii2 Security Features
-
Console Commands & Advanced Features
- Yii2 Console Commands
- Yii2 Events & Behaviors
- Yii2 RESTful API Development
- Consuming Third-Party APIs in Yii2
- Yii2 Background Jobs & Queue System
-
Performance Optimization & Caching
- Yii2 Caching Techniques
- Yii2 Performance Optimization
- Debugging & Logging in Yii2
-
Deployment & Best Practices
- Deploying Yii2 Applications
- Yii2 Best Practices & Large-Scale Application Structure
- Yii2 Multilingual & Localization Support
- Yii2 Module Development
- Integrating Yii2 with Frontend Frameworks (Angular/Vue/React)
-
Special Topics
- Dependency Injection (DI) in Yii2
Yii2 Caching Techniques
Add to BookmarkEfficient caching is essential for improving the performance of Yii2 applications. Yii2 provides multiple caching mechanisms, including file-based, database, memory, and fragment caching. This tutorial covers different caching strategies and how to implement them in Yii2.
Types of Caching in Yii2
Yii2 supports various caching techniques, including:
- Data Caching – Stores data in cache to avoid recalculating it.
- Fragment Caching – Caches specific parts of a view.
- Page Caching – Caches entire pages to improve response time.
- Query Caching – Caches database query results.
- HTTP Caching – Uses browser and server cache headers to improve efficiency.
Configuring Cache in Yii2
Yii2 supports multiple cache components, such as FileCache, DbCache, and MemCache. Configure the cache component in config/web.php
(Basic Template) or common/config/main.php
(Advanced Template).
File Cache (Default)
'components' => [
'cache' => [
'class' => 'yii\caching\FileCache',
],
],
File-based caching is suitable for small applications but may not perform well under high load.
Database Cache
'components' => [
'cache' => [
'class' => 'yii\caching\DbCache',
'db' => 'db', // Database connection
'cacheTable' => 'cache', // Table name
],
],
Run the following command to create the cache table:
php yii cache/schema
Database caching is useful when multiple application instances share cached data.
Memcached
'components' => [
'cache' => [
'class' => 'yii\caching\MemCache',
'servers' => [
['host' => '127.0.0.1', 'port' => 11211, 'weight' => 100],
],
],
],
Memcached is suitable for high-performance applications with distributed caching needs.
Data Caching
Data caching allows you to store complex calculations, API responses, or database results in the cache.
Storing and Retrieving Cached Data
$key = 'expensive_data';
$data = Yii::$app->cache->get($key);
if ($data === false) {
$data = ExpensiveCalculation(); // Example function
Yii::$app->cache->set($key, $data, 3600); // Store for 1 hour
}
This avoids recomputing data on every request.
Deleting Cached Data
Yii::$app->cache->delete('expensive_data');
To clear all cache:
Yii::$app->cache->flush();
Fragment Caching
Fragment caching allows caching a specific part of a view.
Using Fragment Cache in Views
if ($this->beginCache('sidebar', ['duration' => 3600])) {
echo $this->render('sidebar');
$this->endCache();
}
This caches the sidebar
partial view for 1 hour.
Adding Cache Dependency
if ($this->beginCache('sidebar', [
'duration' => 3600,
'dependency' => [
'class' => 'yii\caching\DbDependency',
'sql' => 'SELECT MAX(updated_at) FROM news',
],
])) {
echo $this->render('sidebar');
$this->endCache();
}
This ensures the cache is invalidated whenever news
is updated.
Fragment Caching in Search Models (Handling Dynamic Filters)
To cache different results for different filters, we generate a cache key dynamically based on the search parameters.
Use a Unique Cache Key Per Filter Combination
$cacheKey = 'search-results-' . md5(json_encode(Yii::$app->request->queryParams));
if ($this->beginCache($cacheKey, ['duration' => 3600])) {
echo GridView::widget(['dataProvider' => $dataProvider, 'filterModel' => $searchModel]);
$this->endCache();
}
How This Works:
Yii::$app->request->queryParams
holds all the filter inputs.- We convert it to a unique string using
json_encode()
. - Then, we hash it using
md5()
to create a unique cache key. - Now, different filter conditions will generate different cache keys, ensuring correct results for each search.
Page Caching
Page caching caches the entire page, reducing processing time for static pages.
Enable Page Caching in Controller
public function behaviors()
{
return [
'pageCache' => [
'class' => 'yii\filters\PageCache',
'only' => ['index'],
'duration' => 3600,
],
];
}
This caches the index
action for 1 hour.
Query Caching
Query caching stores database query results to reduce database load.
Using cache()
Method:
$users = User::find()->cache(3600)->all(); // Cache query results for 1 hour
Enable Query Caching
$cache = Yii::$app->cache;
$data = Yii::$app->db->cache(function ($db) {
return $db->createCommand('SELECT * FROM posts')->queryAll();
}, 3600);
This caches the query results for 1 hour.
Using Cache Dependency
$dependency = new \yii\caching\DbDependency([
'sql' => 'SELECT COUNT(*) FROM posts',
]);
$data = Yii::$app->db->cache(function ($db) {
return $db->createCommand('SELECT * FROM posts')->queryAll();
}, 3600, $dependency);
This invalidates the cache when the number of posts changes.
HTTP Caching
Yii2 supports HTTP caching using headers to reduce load on the server.
Enable HTTP Caching in Controller
public function behaviors()
{
return [
'httpCache' => [
'class' => 'yii\filters\HttpCache',
'only' => ['index'],
'lastModified' => function () {
return time();
},
'etagSeed' => function () {
return Yii::$app->cache->get('etag_seed');
},
],
];
}
This adds Last-Modified
and ETag
headers to the response.
Best Practices for Yii2 Caching
- Use fragment caching for reusable UI components.
- Use query caching to reduce database load.
- Use dependency-based caching to invalidate cache intelligently.
- Use memory-based caching (Redis, Memcached) for high-performance applications.
- Regularly flush cache when deploying updates.
Conclusion
Yii2 provides multiple caching mechanisms to improve application performance. Choosing the right caching strategy depends on your application’s needs. Implementing caching effectively can reduce server load and enhance user experience.
Prepare for Interview
- SQL Interview Questions for 2–5 Years Experience
- SQL Interview Questions for 1–2 Years Experience
- SQL Interview Questions for 0–1 Year Experience
- SQL Interview Questions for Freshers
- Design Patterns in Python
- Dynamic Programming and Recursion in Python
- Trees and Graphs in Python
- Linked Lists, Stacks, and Queues in Python
- Sorting and Searching in Python
- Debugging in Python
- Unit Testing in Python
- Asynchronous Programming in PYthon
- Multithreading and Multiprocessing in Python
- Context Managers in Python
- Decorators in Python
Random Blogs
- Understanding HTAP Databases: Bridging Transactions and Analytics
- Government Datasets from 50 Countries for Machine Learning Training
- OLTP vs. OLAP Databases: Advanced Insights and Query Optimization Techniques
- AI & Space Exploration – AI’s Role in Deep Space Missions and Planetary Research
- How AI Companies Are Making Humans Fools and Exploiting Their Data
- Where to Find Free Datasets for Your Next Machine Learning & Data Science Project
- Time Series Analysis on Air Passenger Data
- Ideas for Content of Every niche on Reader’s Demand during COVID-19
- 10 Awesome Data Science Blogs To Check Out
- Google’s Core Update in May 2020: What You Need to Know
- What is YII? and How to Install it?
- Internet of Things (IoT) & AI – Smart Devices and AI Working Together
- Deep Learning (DL): The Core of Modern AI
- Mastering Python in 2025: A Complete Roadmap for Beginners
- Understanding Data Lake, Data Warehouse, Data Mart, and Data Lakehouse – And Why We Need Them
Datasets for Machine Learning
- Amazon Product Reviews Dataset
- Ozone Level Detection Dataset
- Bank Transaction Fraud Detection
- YouTube Trending Video Dataset (updated daily)
- Covid-19 Case Surveillance Public Use Dataset
- US Election 2020
- Forest Fires Dataset
- Mobile Robots Dataset
- Safety Helmet Detection
- All Space Missions from 1957
- OSIC Pulmonary Fibrosis Progression Dataset
- Wine Quality Dataset
- Google Audio Dataset
- Iris flower dataset
- Artificial Characters Dataset