Этот бандл позволяет использовать 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.