Ich möchte die HTML5-Cache-Manifest-Technologie mit CakePHP, , aber ich weiß nicht, wo das Cache-Manifest in CakePHP, Ich habe eine Lösung gesucht, aber ich habe nichts gefunden. Können Sie mir helfen?Wie kann ich HTML5-Cache-Manifest mit CakePHP verwenden?
Antwort
Wenn Sie die Manifest-Datei meinen, sollte sie in/app/webroot gehen, das Verzeichnis, das Ihr vhost auch für die Site verwenden sollte. Außerdem gibt es mit CakePHP nichts, was damit zusammenhängt.
Werfen Sie einen Blick auf diese: http://www.html5rocks.com/en/tutorials/appcache/beginner/
Die beste und einfachste Weg, eine Manifest-Datei in allen Ansichten zuzugreifen, ist auf Ihre Layouts zu sehen, zum Beispiel
View/Layouts/default.ctp
und ersetzen <html>
mit
<?php echo "<html manifest='".$this->webroot."manifest.php'>"; ?>
in denen Manifest.php in
befindetapp/webroot/manifest.php
und sieht ungefähr so aus:
<?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";
?>
So ist die Manifest.php nur einmal benötigt wird, und kann für alle Ansichten verwendet werden.
TIPP:
Für eine dynamische Manifest-Datei, die Sie ein Code-Snippet von hier verwenden können:
http://nial.me/2010/01/using-the-html5-cache-manifest-with-dynamic-files/
Ich habe versucht, diese Lösung, in default.ctp das Manifest setzen, aber es verursacht einige Probleme , alle meine Seiten wurden zwischengespeichert ... ich denke, es ist beschrieben in the spec "... die Seite, die das Manifest referenzierte, wird automatisch zwischengespeichert, auch wenn es nicht explizit erwähnt wird".
... da alle meine Seiten zwischengespeichert wurden, wird Manifest auf jeder Seite überprüft. Und wenn sich ein anderer Benutzer anmeldet, sehen sie die letzte Benutzer-Homepage und andere Seiten.
Die endgültige Lösung: eine Umleitung/Lade Seite erstellen
1 - Erstellen Sie die Umleitungsseite: ich die Seiten/redirect.ctp-Datei erstellen hatte und die Funktion Umleitung() {} in der Seiten-Controller . Eine einfache Seite, nur mit einer Hallo-Nachricht und einer Ladebalken basierend auf dem ApplicationCache-Fortschrittsereignis:
var appCache = window.applicationCache;
appCache.addEventListener ('Fortschritt', Funktion (Ereignis) { console.log (event.loaded + "of" + event.total + "Dateien ..."); // einige Änderungen auf der Seite vornehmen ' Ladebalken }, falsch);
2 - Manifest lädt nur in der Umleitungsseite: Im Ansicht/Layout/default.ctp Ich habe das Tag gefiltert, um das Manifest nur auf der Umleitungsseite anzuzeigen:
<? if ($ this-> request-> params ['controller'] == 'pages' & &
$ this-> request-> params ['aktion'] == 'redirect'):? >
html manifest = "<? = $ This-> webroot?> Manifest.php">
<? sonst:?>
< html>
<? endif; ?>
3 - die Umleitungsseite in der Auth Komponente Verwenden Sie meinen Benutzer
umleiten Seite nach der Anmeldung zu führen: Im AppController eine gefasste Auth Komponente wie dieses
public $ components = array (
'Session',
'Auth' => array (
'authError' => "Benutzer oder Passwort ungültig",
'unauthorizedRedirect' => "/ pages/umleiten? Err = login",
'loginRedirect' => "/ pages/redirect",
'logoutRedirect' => "/",
'loginaction' => "/user/login ",
'autorisieren' => Array ('Controller')
)
);
jetzt nur noch die im Manifest geputtet Elemente zwischengespeichert werden. Die Redirect-Seite wird (gemäß der Spezifikation) zwischengespeichert, aber das ApplicationCache-Ereignis aktualisiert die Seite, die dieses "Dynamic" verursacht.
Ok Ich weiß, was ist der Anwendungscache. Was ich versuche zu finden ist, wie man die Manifest-Datei foreach Ansicht auf der CakePHP-Anwendung verwendet. Aber wenn ich es in die/app/Webroot platzieren muss, ist es eine einzige Manifest-Datei für alle die CakePHP-Anwendung. – albertopriore
Lesen Sie den Link, den ich zur Verfügung gestellt habe. Es gibt keine Begrenzung in Cachedateien. Wenn Cake die Seiten generiert, wird immer eine Layout-Datei gerendert, die das html-Tag hat, außer dass es keine HTML-Ansicht/Layout ist, die Sie rendern. Setzen Sie einfach eine Standard-Manifest-Datei dort oben, etwas wie if (! Isset ($ cacheManifist)) {echo 'default.mf'; } else {echo $ cacheManifest; Setzen Sie die Variable innerhalb einer beliebigen Ansichtsdatei. – burzum