Как кешировать с манифестом Node.js сайт - PullRequest
7 голосов
/ 01 февраля 2012

В связи с моим ранним вопросом о том, как добавить кэш манифеста в node.js, теперь мой вопрос связан с тем, как кэшировать HTML-код, созданный node.js. Поскольку у нас не было физического файла, как в php (index.php), мы не можем кэшировать такие файлы.

Как мы можем кэшировать "несуществующую" страницу? Просто добавив в кеш:

    CACHE MANIFEST

    CACHE:
    # plain files to cache
    /javascripts/client.js
    /stylesheets/style.css
    /stylesheets/style.styl
    # generated files like /
    /
    /content

Есть идеи, как решить эту проблему?

Спасибо!

Решение:

Добавьте маршрутизатор для возврата файла cache.manifest с правильным mime-типом:

app.get("/offline.manifest", function(req, res){
  res.header("Content-Type", "text/cache-manifest");
  res.end("CACHE MANIFEST");
});

Найден при стеке потока

1 Ответ

3 голосов
/ 01 февраля 2012

URL-адреса списка манифеста кэша, которые должны быть кэшированы. Клиент, получающий доступ к этим URL-адресам, не знает, являются ли они статическими HTML-файлами поверх Apache или динамическим содержимым, генерируемым node.js, или чем-то еще.

Вы в основном инструктируете клиента:

  1. Прочитайте мой список URL
  2. Пройдите по каждому URL
  3. Загрузите ответ и сохраните его в надежном месте
  4. Проверьте мой cache.manifest, изменился ли он, и перейдите к шагу 1

Таким образом, до тех пор, пока ваши данные, сгенерированные node.js, доступны через URL, нет проблем с определением их как строки в манифесте кэша.

И если вас беспокоит, «как я узнаю, какие URL есть», вы всегда можете сгенерировать файл cache.manifest программно из самого node.js, но не забудьте указать правильный тип содержимого text/cache-manifest

...