Методы очистки кэша node.js - PullRequest
6 голосов
/ 23 января 2011

При рендеринге html-файлов, которые ссылаются на статические файлы (.js, .css) - как вы справляетесь с очисткой кэша?Вы вручную меняете файл blabla.css? v = VERSIONNUMBER при каждом изменении файла?у вас есть какой-нибудь автоматический механизм, основанный на файле mtime?

1 Ответ

7 голосов
/ 23 января 2011

Я бы оставил кэширование до протокола HTTP, так как он предназначен для этого.Просто укажите заголовок ответа ETag в каждом ответе и добавьте поддержку условных запросов, проверив заголовок запроса If-none-match.

Хороший способ вычисления тега сущности зависит от способа хранения файлов.В типичной файловой системе * nix значение inode является хорошим началом.

Пример:

fs.stat(filePath, function(err, stats) {
    if (err || !stats.isFile()) {
        //oops
    }
    else {
        var etag = '"' + stats.ino + '-' + stats.size + '-' + Date.parse(stats.mtime) + '"';

        //if etag in header['if-non-match'] => 304
        //else serve file with etag
    }
});

В особых случаях вы можете даже захотеть кэшировать etag или даже файл в памяти и зарегистрировать обратный вызов fs.watchFile(), чтобы сделать запись недействительной каккак только файл изменится.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...