Skip to content
This repository has been archived by the owner on Feb 1, 2021. It is now read-only.

qustavo/laravel-fragment-caching

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Not supported No Maintenance Intended

This project is not supported anymore, you can try matryoshka instead.

laravel-fragment-caching

Add a Fragment caching support helper. Blog post

Installation

Run: composer require gchaincl/laravel-fragment-caching:dev-master or

  • add: "require": { "gchaincl/laravel-fragment-caching": "dev-master" }, to composer.json
  • run: composer install
  • add: The following to your app/config/app.php
$providers => array(
  ...
 	'Gchaincl\LaravelFragmentCaching\ViewServiceProvider',
)

Usage

In your view:

<ul>
@foreach ($posts as $post)

@cache("post" . $post->id)
    <li> {{ link_to_route('post.show', $post->title, $post->id) }} ({{ $post->user->username }})</li>
@endcache

@endforeach
</ul>

First time we load that view, Framework will run 3 queries:

select * from "posts"
select * from "users" where "users"."id" = '5' limit 1
select * from "users" where "users"."id" = '5' limit 1

Second time, as fragments are already cached, there will be just one query:

select * from "posts"

Conditional caching

In situations where you don't always want to cache a block you can use @cacheif($condition, $cacheId)

{{-- Only use the cache for guests, admins will always get content rendered from the template --}}
@cacheif( Auth::guest(), "post" . $post->id)
    <li> {{ link_to_route('post.show', $post->title, $post->id) }} (@if (Auth::guest()) {{ $post->user->username }} @else {{ $post->user->email }} @endif)</li>
@endcacheif

Tip

To update view rendering on model changes, you should expire your fragments:

// app/model/Post.php

class Post extends Eloquent {

    public static function boot() {
        parent::boot();
        static::updated(function($model) {
            Cache::forget("post" . $model->id);
        });
    }
}

About

Fragment Caching support for the Laravel Framework

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages