2013-12-24 2 views
6

Я использую простой экспресс для работы с базовым проектом. Это файл, который мы используем:node.js express JS-файл кеширования

проект
app.configure('production', function() { 
var myTime = 432000;   //5 days 
app.set('port', process.env.PORT || 80); 
app.use(express.bodyParser()); 
app.use(express.methodOverride()); 
app.use(allowCrossDomain); 
app.use(app.router);  
app.use(express.static(__dirname + './../', { maxAge: myTime })); 
console.log("SERVING !!!"); 
}); 

Каждое развертывание оптимизирована с использованием require.js (r.js). Файлы конкретизируются, минимизируются и угасаются и развертываются на рабочем сервере.

Проблема заключается в следующем. Предположим, я установил кеш на 15 дней. А на третий день мы разворачиваем новый проект, то есть новую версию. Клиентский браузер не будет вытаскивать новые файлы javascript, так как он уже обналичен и действителен.

Как мне обмануть браузер, чтобы удалить его кеш с новыми файлами?

спасибо: D

ответ

3

Там нет никакого способа, чтобы очистить кэш браузера от сервера. Вот почему многие фреймворки добавляют строку версии после URL для статического контента.

Если ваше приложение версии 3.0.1, ваш статический контент URL должен быть таким:

http://example.com/js/jquery.js?v=3.0.1

Существует доступный модуль для вас по имени versionator на хранилище НПМ:

+0

Звучит как идеальное решение. Я дам ему шанс и опубликую результаты здесь. – EnterpriseXL

1

Я нашел более простое решение с использованием версии.

Поскольку я использовал require.js для проекта, то получается, что require.js имеет встроенный метод для управления файлами JavaScript: Я использую: «urlArgs:„бюст = v3“,» ...

Сегмент из моего файла main.js:

require.config({ 
baseURL: '.', 
urlArgs: "bust=v3", 
paths: { 
    underscore : 'lib/underscore', 
    backbone : 'lib/backbone', 
    babysitter : 'lib/backbone.babysitter',