Этот бандл позволяет использовать HTML5 Application Cache в своем проекте на Symfony2.
Демо - текущая страница. Можете отключить на время интернет и обновить страницу. Вы не заметите никаких изменений, т.к. содержимое страницы и все файлы статики (css/js/images) будут загружаться из памяти браузера.
Установка через 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.