Я пытаюсь создать сервер Express, который использует параметр пути для получения данных для последующего рендеринга в SVG.
Моя проблема в том, что при использовании клиента REST для выполнения запросов GET к моему маршруту я, похоже, получаю кешированный ответ. Если я перезапущу свой сервер узлов, я получу желаемый ответ: строка «/: data» отображается в моем SVG. Любые последующие запросы просто возвращают первый параметр запроса, который я отправил после запуска сервера узла.
Если я просто верну req.params.data
, он будет обновляться каждый раз, когда я делаю запрос, как я и надеюсь; при использовании его в рендеринге SVG он не обновляется - мой элемент 'rect' сохраняет значение первого запроса.
app.get('/render/:data' controller.render);
Контроллер.js
exports.render = function(req, res) {
var output = renderSVG(req.params.data);
res.send(output);
res.end();
};
function renderSVG(data) {
var svg = window.d3.select('body')
.append('div').attr('id', 'map')
.append('svg')
.attr("width", width)
.attr("height", height);
svg.append('rect').text(data);
return window.d3.select('#map').html();
}
Я использую D3 и jsdom для рендеринга SVG на стороне сервера.
Я попытался обеспечить полное отсутствие кэширования в моем ответе с помощью промежуточного программного обеспечения:
app.use(function noCache(req, res, next) {
res.setHeader('Cache-Control', 'no-cache, private, no-store, must-revalidate, max-age=0, max-stale=0, post-check=0, pre-check=0');
res.setHeader("Pragma", "no-cache");
res.setHeader("Expires", 0);
next();
});
Все еще безрезультатно.
Я подозреваю, что это как-то связано с jsdom...