HTML5CacheBundle для Symfony2

Этот бандл позволяет использовать HTML5 Application Cache в своем проекте на Symfony2.

Демо - текущая страница. Можете отключить на время интернет и обновить страницу. Вы не заметите никаких изменений, т.к. содержимое страницы и все файлы статики (css/js/images) будут загружаться из памяти браузера.

GitHub

Установка через Composer - менеджер php пакетов

$ composer require evheniy/html5-cache-bundle "1.*"

Или добавить в composer.json:

"evheniy/html5-cache-bundle": "1.*"

AppKernel:

public function registerBundles()
    {
        $bundles = array(
            ...
            new Evheniy\HTML5CacheBundle\HTML5CacheBundle(),
        );
        ...

config.yml:

#HTML5CacheBundle
    html5_cache: ~

Или со всеми параметрами:

#HTML5CacheBundl
html5_cache:
    cdn: cdn.site.com
    http: true
    https: false
    custom_urls:
        - https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js
        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css
        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css
        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js
        - ...

Добавте эту строку в основной шаблон (layout.html.twig):

<html{{- cache_manifest()|raw -}}>
...

Последний шаг:

app/console manifest:dump

Документация

Хорошей практикой считается отдавать статику из локального CDN:

html5_cache:
    cdn: cdn.site.com

По умолчанию этот параметр не используется.

Если он все же используется, то можно указать протоколы (http/https):

html5_cache:
    cdn: cdn.site.com
    http:  true
    https: false

По умолчанию оба протокола включены.

Также можно указать дополнительные адреса, которые необходимы для работы приложения в offline режиме. Это могут быть пути к файлам из других CDN, например jQuery и Twitter Bootstrap:

html5_cache:
    custom_urls:
        - https://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.min.js
        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css
        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap-theme.min.css
        - https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js
        - ...

Частичное использование

Пример использования HTML5 Application Cache для некоторых страниц.

layout.html.twig:

<html{%- block cache_manifest -%}{%- endblock -%}>
...

page_with_cache.html.twig:

{%- extends "layout.html.twig" -%}
{%- block cache_manifest -%}{{- cache_manifest()|raw -}}{%- endblock -%}
...

page_without_cache.html.twig:

{%- extends "layout.html.twig" -%}
{%- block cache_manifest -%}{%- endblock -%}
...

Интеграция с JqueryBundle

При использовании JqueryBundle адрес будет добавлен автоматически:

https://ajax.googleapis.com/ajax/libs/jquery/{JqueryBundle.config.version}/jquery.min.js

{JqueryBundle.config.version} - версия, используемая бандлом.

Интеграция с TwitterBootstrapBundle

При использовании TwitterBootstrapBundle адрес будет добавлен автоматически:

- https://maxcdn.bootstrapcdn.com/bootstrap/{TwitterBootstrapBundle.config.version}/css/bootstrap.min.css
- https://maxcdn.bootstrapcdn.com/bootstrap/{TwitterBootstrapBundle.config.version}/css/bootstrap-theme.min.css
- https://maxcdn.bootstrapcdn.com/bootstrap/{TwitterBootstrapBundle.config.version}/js/bootstrap.min.js

{TwitterBootstrapBundle.config.version} - версия, используемая бандлом.

Интеграция с MaterializeBundle

При использовании MaterializeBundle адрес будет добавлен автоматически:

- https://cdnjs.cloudflare.com/ajax/libs/materialize/{MaterializeBundle.config.version}/css/materialize.min.css
- https://cdnjs.cloudflare.com/ajax/libs/materialize/{MaterializeBundle.config.version}/js/materialize.min.js

{MaterializeBundle.config.version} - версия, используемая бандлом.

Лицензия

Этот бандл использует лицензию MIT.

HTML5 Application Cache

Теги: Html5, Cache, Symfony, Html5 application cache, Cache manifest


Похожие статьи

SimplePaginationBundle для Symfony2

RobotsTxtBundle для Symfony2

TwitterBootstrapBundle для Symfony2

GtmBundle (Google Tag Manager) для Symfony2

SitemapXmlBundle для Symfony2

JqueryBundle для Symfony2

MaterializeBundle для Symfony2

HTML5VertiTemplateBundle для Symfony2

SimpleTaskFSMBundle для Symfony2