Как я могу использовать манифест html5 кеша с CakePHP? - PullRequest
0 голосов
/ 28 марта 2012

Я хочу использовать технологию манифеста кэша html5 с CakePHP, но не знаю, где разместить манифест кэша в CakePHP, я искал решение, но ничего не нашел.Вы можете мне помочь?

Ответы [ 3 ]

3 голосов
/ 11 сентября 2013

Лучший и самый простой способ получить доступ к одному файлу манифеста во всех представлениях - это просмотреть макеты, например,

View/Layouts/default.ctp

и заменить <html> на

<?php echo "<html manifest='".$this->webroot."manifest.php'>"; ?>

вкакой manifest.php находится в

app/webroot/manifest.php

и выглядит примерно так:

<?php
    header('Content-Type: text/cache-manifest');
    echo "CACHE MANIFEST\n";
    echo "\n\nNETWORK:\n";
    echo "*\n";

    echo "\n\nCACHE:\n"; 

    echo "# Version: 1\n";
?>

Таким образом, manifest.php необходим только один раз и может использоваться для всех представлений.

СОВЕТ:
Для динамического файла манифеста вы можете использовать фрагмент кода здесь:
http://nial.me/2010/01/using-the-html5-cache-manifest-with-dynamic-files/

1 голос
/ 02 мая 2015

Я попробовал это решение, поместив манифест в default.ctp, но это вызывает некоторые проблемы, все мои страницы были кэшированы ... я думаю, что он описан в спецификации"... страницессылка на манифест автоматически кэшируется, даже если он явно не упоминается ".

... так как все мои страницы кэшируются, манифест проверяется на каждой странице.И когда другой пользователь входит в систему, он видит домашнюю страницу последнего пользователя и другие страницы.

Окончательное решение: создать страницу перенаправления / загрузки

1 - создать страницу перенаправления: Я создал файл Pages / redirect.ctp и функцию redirect () {} в контроллере Pages.Простая страница с приветственным сообщением и панелью загрузки на основе события прогресса applicationCache:

var appCache = window.applicationCache;
appCache.addEventListener ('progress', function (event) {console.log (event.loaded + "of" + event.total + "files ..."); // внести некоторые изменения в панель загрузки страницы}, false);

2 - Загрузить манифест только на странице перенаправления: В View / Layouts / default.ctp я отфильтровал тег, чтобы показать манифест только на странице перенаправления:

request-> params ['controller'] == 'pages' &&
$ this-> request-> params ['action'] == 'redirect'):?>



3 - Используйте страницу перенаправления в компоненте аутентификации, чтобы заставить моего пользователя
перенаправить страницу после входа в систему:
В appController установленный компонент аутентификации, подобный этому

public $ components = array (
'Session',
'Auth' => array (
'authError' => "Неверный пользователь или пароль",
'unauthorizedRedirect'=> "/ pages / redirect? err = login",
'loginRedirect' => "/ pages / redirect",
'logoutRedirect' => "/",
'loginAction' => "/user / login ",
'authorize' => array ('Controller')
)
);

теперь будут кэшироваться только элементы, помещенные в манифест.Страница перенаправления кэшируется (согласно спецификации), но событие applicationCache обновляет страницу с этим «динамическим».

0 голосов
/ 28 марта 2012

Если вы имеете в виду файл манифеста, который он должен поместить в / app / webroot, каталог, который ваш vhost также должен использовать для сайта.кроме того, с CakePHP нет ничего, связанного с этим.

Посмотрите на это: http://www.html5rocks.com/en/tutorials/appcache/beginner/

...