Provides a httpcache warmup command for Symfony2
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
tests
.gitattributes
.gitignore
.php_cs
.scrutinizer.yml
.styleci.yml
.travis.yml
LICENSE
README.md
composer.json
phpunit.xml

README.md

ZenstruckCacheBundle

Build Status Scrutinizer Code Quality Code Coverage StyleCI Latest Stable Version License

Provides a httpcache warmup command for Symfony2. The command simply executes a GET request on a list of urls. One or more url providers must be registered. This bundle requires an implementation of php-http/httplug and php-http/message-factory.

Installation

  1. Add to your composer.json:

    $ composer require zenstruck/cache-bundle
    
  2. Register this bundle with Symfony2:

    // app/AppKernel.php
    
    public function registerBundles()
    {
        $bundles = array(
            // ...
            new Zenstruck\CacheBundle\ZenstruckCacheBundle(),
        );
        // ...
    }

Configuration

An http_client (class or service implementing Http\Client\HttpClient) and message_factory (class or service implementing Http\Message\MessageFactory) must be configured.

zenstruck_cache:
    http_client:    Acme\MyHttpClient    # or a service (acme.my_http_client)
    message_factory: Acme\MyMessageFactory # or a service (acme.my_message_factory)

HttpCache Warmup Command

Usage:

app/console zenstruck:http-cache:warmup

Sitemap Provider

This bundle comes with a URL provider that looks at a list of sitemaps to retrieve a list of urls. If a url is given without the sitemap or sitemap index, the provider first looks for a {url}/sitemap_index.xml to find a set of sitemap files. If no index is found, it defaults to using {url}/sitemap.xml.

To enable the sitemap provider, configure it in your config.yml:

zenstruck_cache:
    sitemap_provider:
        sitemaps:
            - http://example.com/sitemap.xml # detects if sitemap or sitemap index and act accordingly
            - http://example.com/en/sitemap.xml # same as above
            - http://www.example.com # trys http://example.com/sitemap_index.xml and http://example.com/sitemap.xml

Add a Custom URL Provider

  1. Create a class that implements Zenstruck\CacheBundle\Url\UrlProvider:

    use Zenstruck\CacheBundle\Url\UrlProvider;
    
    namespace Acme;
    
    class MyUrlProvider implements UrlProvider
    {
        public function getUrls()
        {
            $urls = array();
    
            // fetch from a datasource
    
            return $urls;
        }
    
        public function count()
        {
            return count($this->getUrls());
        }
    }
  2. Register the class as a service tagged with zenstruck_cache.url_provider:

    my_url_provider:
        class: Acme\MyUrlProvider
        tags:
            - { name: zenstruck_cache.url_provider }

Full Default Config

zenstruck_cache:
    # Either a class or a service that implements Http\Client\HttpClient.
    http_client:              ~ # Required

    # Either a class or a service that implements Http\Message\MessageFactory.
    message_factory:          ~ # Required

    sitemap_provider:
        enabled:              false
        sitemaps:             []