# FragmentCache

> FragmentCache is used by yii\base\View to provide caching of page fragments.

[API reference](/docs/api/index.md) › [yii](/docs/api/yii/index.md) › [widgets](/docs/api/yii/widgets/index.md) › FragmentCache

| class | `yii\widgets\FragmentCache` |
| --- | --- |
| Extends | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) » [`yii\base\Component`](/docs/api/yii/base/component/index.md) » [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| Implements | [`yii\base\DynamicContentAwareInterface`](/docs/api/yii/base/dynamiccontentawareinterface/index.md), [`yii\base\ViewContextInterface`](/docs/api/yii/base/viewcontextinterface/index.md), [`yii\base\Configurable`](/docs/api/yii/base/configurable/index.md) |
| Uses traits | [`yii\base\DynamicContentAwareTrait`](/docs/api/yii/base/dynamiccontentawaretrait/index.md) |
| Since | 2.0 |
| Source | [`framework/widgets/FragmentCache.php`](https://github.com/yiisoft/yii2/blob/22.0/framework/widgets/FragmentCache.php#L28) |

FragmentCache is used by [`View`](/docs/api/yii/base/view/index.md) to provide caching of page fragments.

## Properties

| Property | Type | Description | Defined by |
| --- | --- | --- | --- |
| <span id="property-autoIdPrefix"></span>[`$autoIdPrefix`](/docs/api/yii/base/widget/index.md#property-autoIdPrefix) static | `string` | The prefix to the automatically generated widget IDs. Default: `'w'`. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="property-behaviors"></span>[`$behaviors`](/docs/api/yii/base/component/index.md#property-behaviors) read-only | `array<`[`yii\base\Behavior`](/docs/api/yii/base/behavior/index.md)`<static>>` | List of behaviors attached to this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| [`$cache`](#property-cache) | [`yii\caching\CacheInterface`](/docs/api/yii/caching/cacheinterface/index.md)`\|array\|string` | The cache object or the application component ID of the cache object. Default: `'cache'`. | `FragmentCache` |
| [`$cachedContent`](#property-cachedContent) read-only | `string\|false` | The cached content. | `FragmentCache` |
| [`$dependency`](#property-dependency) | `array\|`[`yii\caching\Dependency`](/docs/api/yii/caching/dependency/index.md) | The dependency that the cached content depends on. Default: `null`. | `FragmentCache` |
| [`$duration`](#property-duration) | `int` | Number of seconds that the data can remain valid in cache. Default: `60`. | `FragmentCache` |
| <span id="property-dynamicPlaceholders"></span>`$dynamicPlaceholders` | `array` | A list of placeholders. | [`yii\base\DynamicContentAwareTrait`](/docs/api/yii/base/dynamiccontentawaretrait/index.md) |
| [`$enabled`](#property-enabled) | `bool` | Whether to enable the fragment cache. Default: `true`. | `FragmentCache` |
| <span id="property-id"></span>[`$id`](/docs/api/yii/base/widget/index.md#property-id) | `string` | Id of the widget. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| [`$variations`](#property-variations) | `string[]\|string` | List of factors that would cause the variation of the content being cached. Default: `null`. | `FragmentCache` |
| <span id="property-view"></span>[`$view`](/docs/api/yii/base/widget/index.md#property-view) | [`yii\web\View`](/docs/api/yii/web/view/index.md) | The view object that can be used to render views or view files. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="property-viewPath"></span>[`$viewPath`](/docs/api/yii/base/widget/index.md#property-viewPath) read-only | `string` | The directory containing the view files for this widget. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |

## Methods

| Method | Description | Defined by |
| --- | --- | --- |
| <span id="method-__construct"></span>[`__construct()`](/docs/api/yii/base/baseobject/index.md#method-__construct) | Constructor. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-__call"></span>[`__call()`](/docs/api/yii/base/component/index.md#method-__call) | Calls the named method which is not a class method. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-__clone"></span>[`__clone()`](/docs/api/yii/base/component/index.md#method-__clone) | This method is called after the object is created by cloning an existing one. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-__get"></span>[`__get()`](/docs/api/yii/base/component/index.md#method-__get) | Returns the value of a component property. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-__isset"></span>[`__isset()`](/docs/api/yii/base/component/index.md#method-__isset) | Checks if a property is set, i.e. defined and not null. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-__set"></span>[`__set()`](/docs/api/yii/base/component/index.md#method-__set) | Sets the value of a component property. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-__unset"></span>[`__unset()`](/docs/api/yii/base/component/index.md#method-__unset) | Sets a component property to be null. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-addDynamicPlaceholder"></span>[`addDynamicPlaceholder()`](/docs/api/yii/base/dynamiccontentawaretrait/index.md#method-addDynamicPlaceholder) | Adds a placeholder for dynamic content. | [`yii\base\DynamicContentAwareTrait`](/docs/api/yii/base/dynamiccontentawaretrait/index.md) |
| <span id="method-afterRun"></span>[`afterRun()`](/docs/api/yii/base/widget/index.md#method-afterRun) | This method is invoked right after a widget is executed. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="method-attachBehavior"></span>[`attachBehavior()`](/docs/api/yii/base/component/index.md#method-attachBehavior) | Attaches a behavior to this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-attachBehaviors"></span>[`attachBehaviors()`](/docs/api/yii/base/component/index.md#method-attachBehaviors) | Attaches a list of behaviors to the component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-beforeRun"></span>[`beforeRun()`](/docs/api/yii/base/widget/index.md#method-beforeRun) | This method is invoked right before the widget is executed. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="method-begin"></span>[`begin()`](/docs/api/yii/base/widget/index.md#method-begin) static | Begins a widget. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="method-behaviors"></span>[`behaviors()`](/docs/api/yii/base/component/index.md#method-behaviors) | Returns a list of behaviors that this component should behave as. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-canGetProperty"></span>[`canGetProperty()`](/docs/api/yii/base/component/index.md#method-canGetProperty) | Returns a value indicating whether a property can be read. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-canSetProperty"></span>[`canSetProperty()`](/docs/api/yii/base/component/index.md#method-canSetProperty) | Returns a value indicating whether a property can be set. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-className"></span>[`className()`](/docs/api/yii/base/baseobject/index.md#method-className) static | Returns the fully qualified name of this class. | [`yii\base\BaseObject`](/docs/api/yii/base/baseobject/index.md) |
| <span id="method-detachBehavior"></span>[`detachBehavior()`](/docs/api/yii/base/component/index.md#method-detachBehavior) | Detaches a behavior from the component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-detachBehaviors"></span>[`detachBehaviors()`](/docs/api/yii/base/component/index.md#method-detachBehaviors) | Detaches all behaviors from the component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-end"></span>[`end()`](/docs/api/yii/base/widget/index.md#method-end) static | Ends a widget. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="method-ensureBehaviors"></span>[`ensureBehaviors()`](/docs/api/yii/base/component/index.md#method-ensureBehaviors) | Makes sure that the behaviors declared in [`behaviors()`](/docs/api/yii/base/component/index.md#method-behaviors) are attached to this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-getBehavior"></span>[`getBehavior()`](/docs/api/yii/base/component/index.md#method-getBehavior) | Returns the named behavior object. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-getBehaviors"></span>[`getBehaviors()`](/docs/api/yii/base/component/index.md#method-getBehaviors) | Returns all behaviors attached to this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| [`getCachedContent()`](#method-getCachedContent) | Returns the cached content if available. | `FragmentCache` |
| <span id="method-getDynamicPlaceholders"></span>[`getDynamicPlaceholders()`](/docs/api/yii/base/dynamiccontentawaretrait/index.md#method-getDynamicPlaceholders) | Returns a list of placeholders for dynamic content. This method is used internally to implement the content caching feature. | [`yii\base\DynamicContentAwareTrait`](/docs/api/yii/base/dynamiccontentawaretrait/index.md) |
| <span id="method-getId"></span>[`getId()`](/docs/api/yii/base/widget/index.md#method-getId) | Returns the ID of the widget. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="method-getView"></span>[`getView()`](/docs/api/yii/base/widget/index.md#method-getView) | Returns the view object that can be used to render views or view files. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="method-getViewPath"></span>[`getViewPath()`](/docs/api/yii/base/widget/index.md#method-getViewPath) | Returns the directory containing the view files for this widget. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="method-hasEventHandlers"></span>[`hasEventHandlers()`](/docs/api/yii/base/component/index.md#method-hasEventHandlers) | Returns a value indicating whether there is any handler attached to the named event. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-hasMethod"></span>[`hasMethod()`](/docs/api/yii/base/component/index.md#method-hasMethod) | Returns a value indicating whether a method is defined. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-hasProperty"></span>[`hasProperty()`](/docs/api/yii/base/component/index.md#method-hasProperty) | Returns a value indicating whether a property is defined for this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| [`init()`](#method-init) | Initializes the FragmentCache object. | `FragmentCache` |
| <span id="method-off"></span>[`off()`](/docs/api/yii/base/component/index.md#method-off) | Detaches an existing event handler from this component. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-on"></span>[`on()`](/docs/api/yii/base/component/index.md#method-on) | Attaches an event handler to an event. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-render"></span>[`render()`](/docs/api/yii/base/widget/index.md#method-render) | Renders a view. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="method-renderFile"></span>[`renderFile()`](/docs/api/yii/base/widget/index.md#method-renderFile) | Renders a view file. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| [`run()`](#method-run) | Marks the end of content to be cached. | `FragmentCache` |
| <span id="method-setDynamicPlaceholders"></span>[`setDynamicPlaceholders()`](/docs/api/yii/base/dynamiccontentawaretrait/index.md#method-setDynamicPlaceholders) | Sets a list of placeholders for dynamic content. This method is used internally to implement the content caching feature. | [`yii\base\DynamicContentAwareTrait`](/docs/api/yii/base/dynamiccontentawaretrait/index.md) |
| <span id="method-setId"></span>[`setId()`](/docs/api/yii/base/widget/index.md#method-setId) | Sets the ID of the widget. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="method-setView"></span>[`setView()`](/docs/api/yii/base/widget/index.md#method-setView) | Sets the view object to be used by this widget. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="method-trigger"></span>[`trigger()`](/docs/api/yii/base/component/index.md#method-trigger) | Triggers an event. | [`yii\base\Component`](/docs/api/yii/base/component/index.md) |
| <span id="method-widget"></span>[`widget()`](/docs/api/yii/base/widget/index.md#method-widget) static | Creates a widget instance and runs it. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| [`calculateKey()`](#method-calculateKey) protected | Generates a unique key used for storing the content in cache. | `FragmentCache` |
| <span id="method-updateDynamicContent"></span>[`updateDynamicContent()`](/docs/api/yii/base/dynamiccontentawaretrait/index.md#method-updateDynamicContent) protected | Replaces placeholders in $content with results of evaluated dynamic statements. | [`yii\base\DynamicContentAwareTrait`](/docs/api/yii/base/dynamiccontentawaretrait/index.md) |

## Events

| Event | Type | Description | Defined by |
| --- | --- | --- | --- |
| <span id="event-EVENT_INIT"></span>[`EVENT_INIT`](/docs/api/yii/base/widget/index.md#event-EVENT_INIT) | [`yii\base\Event`](/docs/api/yii/base/event/index.md) | An event that is triggered when the widget is initialized via [`init()`](/docs/api/yii/base/widget/index.md#method-init). Event name: `'init'`. Available since 2.0.11. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="event-EVENT_BEFORE_RUN"></span>[`EVENT_BEFORE_RUN`](/docs/api/yii/base/widget/index.md#event-EVENT_BEFORE_RUN) | [`yii\base\WidgetEvent`](/docs/api/yii/base/widgetevent/index.md) | An event raised right before executing a widget. Event name: `'beforeRun'`. Available since 2.0.11. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |
| <span id="event-EVENT_AFTER_RUN"></span>[`EVENT_AFTER_RUN`](/docs/api/yii/base/widget/index.md#event-EVENT_AFTER_RUN) | [`yii\base\WidgetEvent`](/docs/api/yii/base/widgetevent/index.md) | An event raised right after executing a widget. Event name: `'afterRun'`. Available since 2.0.11. | [`yii\base\Widget`](/docs/api/yii/base/widget/index.md) |

## Property details

### $cache <span id="property-cache"></span>

```php
public yii\caching\CacheInterface|array|string $cache = 'cache'
```

The cache object or the application component ID of the cache object.

After the FragmentCache object is created, if you want to change this property,
you should only assign it with a cache object.
Starting from version 2.0.2, this can also be a configuration array for creating the object.

### $cachedContent <span id="property-cachedContent"></span>

```php
public string|false $cachedContent
```

The cached content.

False is returned if valid content is not
found in the cache.

**Access**

Read-only (virtual property).

### $dependency <span id="property-dependency"></span>

```php
public array|yii\caching\Dependency $dependency = null
```

The dependency that the cached content depends on.

This can be either a [`Dependency`](/docs/api/yii/caching/dependency/index.md) object or a configuration array for creating the dependency object.
For example,

```
[
    'class' => 'yii\caching\DbDependency',
    'sql' => 'SELECT MAX(updated_at) FROM post',
]
```

would make the output cache depends on the last modified time of all posts.
If any post has its modification time changed, the cached content would be invalidated.

### $duration <span id="property-duration"></span>

```php
public int $duration = 60
```

Number of seconds that the data can remain valid in cache.

Use 0 to indicate that the cached data will never expire.

### $enabled <span id="property-enabled"></span>

```php
public bool $enabled = true
```

Whether to enable the fragment cache.

You may use this property to turn on and off
the fragment cache according to specific setting (e.g. enable fragment cache only for GET requests).

### $variations <span id="property-variations"></span>

```php
public string[]|string $variations = null
```

List of factors that would cause the variation of the content being cached.

Each factor is a string representing a variation (e.g. the language, a GET parameter).
The following variation setting will cause the content to be cached in different versions
according to the current application language:

```
[
    Yii::$app->language,
]
```

## Method details

### getCachedContent() <span id="method-getCachedContent"></span>

```php
public function getCachedContent(): string|false
```

Returns the cached content if available.

**Returns**

`string|false`: The cached content. False is returned if valid content is not found in the cache.

### init() <span id="method-init"></span>

```php
public function init(): mixed
```

Initializes the FragmentCache object.

**Returns**

`mixed`

### run() <span id="method-run"></span>

```php
public function run(): mixed
```

Marks the end of content to be cached.

Content displayed before this method call and after [`init()`](/docs/api/yii/widgets/fragmentcache/index.md#method-init)
will be captured and saved in cache.
This method does nothing if valid content is already found in cache.

**Returns**

`mixed`

### calculateKey() <span id="method-calculateKey"></span>

```php
protected function calculateKey(): mixed
```

Generates a unique key used for storing the content in cache.

The key generated depends on both [`$id`](/docs/api/yii/base/widget/index.md#property-id) and [`$variations`](/docs/api/yii/widgets/fragmentcache/index.md#property-variations).

**Returns**

`mixed`: A valid cache key