GithubHelp home page GithubHelp logo

outspaced / guzzle-cache-middleware Goto Github PK

View Code? Open in Web Editor NEW

This project forked from kevinrob/guzzle-cache-middleware

0.0 2.0 0.0 187 KB

A HTTP Cache for Guzzle 6. It's a simple Middleware to be added in the HandlerStack.

License: MIT License

PHP 100.00%

guzzle-cache-middleware's Introduction

guzzle-cache-middleware

Latest Stable Version Total Downloads License Build Status
Scrutinizer Code Quality SensioLabsInsight Dependency Status

A HTTP Cache for Guzzle 6. It's a simple Middleware to be added in the HandlerStack. This project is under development but it's already functional.

Goals

  • RFC 7234 compliance
  • Performance and transparency
  • Assured compatibility with PSR-7

Installation

composer require kevinrob/guzzle-cache-middleware:~0.5

or add it the your composer.json and make a composer update kevinrob/guzzle-cache-middleware.

Dependencies

  • Currently it depends on and works only with Doctrine\Cache as the actual caching backend. (#27)

Why?

Performance. It's very common to do some HTTP calls to an API for rendering a page and it takes times to do it.

How?

With a simple Middleware added at the top of the HandlerStack of Guzzle6.

use GuzzleHttp\Client;
use GuzzleHttp\HandlerStack;
use Kevinrob\GuzzleCache\CacheMiddleware;

// Create default HandlerStack
$stack = HandlerStack::create();

// Add this middleware to the top with `push`
$stack->push(new CacheMiddleware(), 'cache');

// Initialize the client with the handler option
$client = new Client(['handler' => $stack]);

You can use a custom Cache with:

[...]
use Doctrine\Common\Cache;

[...]
$stack->push(new CacheMiddleware(new PrivateCache(new FilesystemCache('/tmp/'))), 'cache');

You can use ChainCache for using multiple CacheProvider. With that provider, you have to sort the different cache from the faster to the slower. Like that, you can have a very fast cache.

[...]
use Doctrine\Common\Cache;

[...]
$stack->push(new CacheMiddleware(
  new PrivateCache(
    new ChainCache([
      new ArrayCache(),
      new ApcCache(),
      new FileCache('/tmp/'),
    ])
  )
), 'cache');

guzzle-cache-middleware's People

Contributors

eanushan avatar h4cc avatar kevinrob avatar outspaced avatar royopa avatar scrutinizer-auto-fixer avatar thinkscape avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.