Skip to content

Commit ab9efc4

Browse files
committed
fix(server): fix hot reload not work with middleware optimization
1 parent 7f16609 commit ab9efc4

File tree

2 files changed

+74
-74
lines changed

2 files changed

+74
-74
lines changed

lib/commands/server.js

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -246,43 +246,6 @@ exports.run = function (options) {
246246
url = url.replace('.map', '').slice(1);
247247
var cacheId = sysPath.join(projectName, url);
248248

249-
// 按照访问次数/访问间隔做权重排序,默认保留三个 middleware
250-
var now = +new Date();
251-
var middlewareList = (0, _keys2.default)(middlewareCache).map(function (key) {
252-
var middleware = middlewareCache[key];
253-
return middleware ? {
254-
key: key,
255-
middleware: middleware,
256-
weight: middleware._visit / (now - middleware._timestamp) * 1000
257-
} : null;
258-
}).filter(function (v) {
259-
return v;
260-
}).sort(function (a, b) {
261-
return b.weight - a.weight;
262-
});
263-
264-
var removeLen = middlewareList.length - maxMiddleware;
265-
var index = middlewareList.length - 1;
266-
267-
while (removeLen > 0) {
268-
var key = middlewareList[index].key;
269-
if (key !== cacheId) {
270-
var md = middlewareCache[key];
271-
delete middlewareCache[key];
272-
md.close();
273-
}
274-
275-
removeLen -= 1;
276-
index -= 1;
277-
}
278-
279-
// 寻找已有的 middlewareCache
280-
if (middlewareCache[cacheId]) {
281-
middlewareCache[cacheId](req, res, next);
282-
middlewareCache[cacheId]._visit += 1;
283-
return;
284-
}
285-
286249
// hot reload
287250
var hotEnabled = project.server && project.server.hot || hot;
288251
if (hotEnabled) {
@@ -337,6 +300,43 @@ exports.run = function (options) {
337300
allAssetsEntry[projectName] = url;
338301
}
339302

303+
// 按照访问次数/访问间隔做权重排序,默认保留三个 middleware
304+
if (!shouldCompileAllEntries) {
305+
var now = +new Date();
306+
var middlewareList = (0, _keys2.default)(middlewareCache).map(function (key) {
307+
var middleware = middlewareCache[key];
308+
return middleware ? {
309+
key: key,
310+
middleware: middleware,
311+
weight: middleware._visit / (now - middleware._timestamp) * 1000
312+
} : null;
313+
}).filter(function (v) {
314+
return v;
315+
}).sort(function (a, b) {
316+
return b.weight - a.weight;
317+
});
318+
319+
var removeLen = middlewareList.length - maxMiddleware;
320+
var index = middlewareList.length - 1;
321+
322+
while (removeLen > 0) {
323+
var key = middlewareList[index].key;
324+
if (key !== cacheId) {
325+
delete middlewareCache[key];
326+
}
327+
328+
removeLen -= 1;
329+
index -= 1;
330+
}
331+
}
332+
333+
// 寻找已有的 middlewareCache
334+
if (middlewareCache[cacheId]) {
335+
middlewareCache[cacheId](req, res, next);
336+
middlewareCache[cacheId]._visit += 1;
337+
return;
338+
}
339+
340340
var nextConfig = void 0;
341341
if (!shouldCompileAllEntries || allAssetsEntry[projectName] === url) {
342342
compiler = project.getServerCompiler(function (config) {

src/commands/server.js

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -230,42 +230,6 @@ exports.run = (options) => {
230230
url = url.replace('.map', '').slice(1);
231231
const cacheId = sysPath.join(projectName, url);
232232

233-
// 按照访问次数/访问间隔做权重排序,默认保留三个 middleware
234-
const now = +new Date();
235-
const middlewareList = Object.keys(middlewareCache)
236-
.map(key => {
237-
const middleware = middlewareCache[key];
238-
return middleware ? {
239-
key,
240-
middleware: middleware,
241-
weight: middleware._visit / (now - middleware._timestamp) * 1000
242-
} : null;
243-
})
244-
.filter(v => v)
245-
.sort((a, b) => b.weight - a.weight);
246-
247-
let removeLen = middlewareList.length - maxMiddleware;
248-
let index = middlewareList.length - 1;
249-
250-
while (removeLen > 0) {
251-
const key = middlewareList[index].key;
252-
if (key !== cacheId) {
253-
const md = middlewareCache[key];
254-
delete middlewareCache[key];
255-
md.close();
256-
}
257-
258-
removeLen -= 1;
259-
index -= 1;
260-
}
261-
262-
// 寻找已有的 middlewareCache
263-
if (middlewareCache[cacheId]) {
264-
middlewareCache[cacheId](req, res, next);
265-
middlewareCache[cacheId]._visit += 1;
266-
return;
267-
}
268-
269233
// hot reload
270234
const hotEnabled = (project.server && project.server.hot) || hot;
271235
if(hotEnabled) {
@@ -320,6 +284,42 @@ exports.run = (options) => {
320284
allAssetsEntry[projectName] = url;
321285
}
322286

287+
// 按照访问次数/访问间隔做权重排序,默认保留三个 middleware
288+
if(!shouldCompileAllEntries) {
289+
const now = +new Date();
290+
const middlewareList = Object.keys(middlewareCache)
291+
.map(key => {
292+
const middleware = middlewareCache[key];
293+
return middleware ? {
294+
key,
295+
middleware: middleware,
296+
weight: middleware._visit / (now - middleware._timestamp) * 1000
297+
} : null;
298+
})
299+
.filter(v => v)
300+
.sort((a, b) => b.weight - a.weight);
301+
302+
let removeLen = middlewareList.length - maxMiddleware;
303+
let index = middlewareList.length - 1;
304+
305+
while (removeLen > 0) {
306+
const key = middlewareList[index].key;
307+
if (key !== cacheId) {
308+
delete middlewareCache[key];
309+
}
310+
311+
removeLen -= 1;
312+
index -= 1;
313+
}
314+
}
315+
316+
// 寻找已有的 middlewareCache
317+
if (middlewareCache[cacheId]) {
318+
middlewareCache[cacheId](req, res, next);
319+
middlewareCache[cacheId]._visit += 1;
320+
return;
321+
}
322+
323323
let nextConfig;
324324
if(!shouldCompileAllEntries || allAssetsEntry[projectName] === url) {
325325
compiler = project.getServerCompiler(function (config) {
@@ -538,7 +538,7 @@ exports.run = (options) => {
538538
cert: fs.readFileSync(globalConfig['https-crt'])
539539
};
540540
}
541-
541+
542542
servers.push(extend(https.createServer(httpsOpts, app), { _port: '443', _isHttps: true }));
543543
}
544544

0 commit comments

Comments
 (0)