gpt4 book ai didi

Angular 2通用缓存服务器上渲染的页面

转载 作者:行者123 更新时间:2023-12-02 20:56:58 25 4
gpt4 key购买 nike

关于 Angular 通用的两个问题:

  1. 我如何让 Angular 在服务器端缓存渲染的页面,因为仅客户端的初始响应就需要大约 2 秒,因为 Angular 每次都会在服务器端生成页面。

  2. 在前端,似乎 Angular 正在破坏网站,例如 self.context.(funcname) 不存在。我知道这些问题与调用函数的范围有关,如果我不使用通用(包括预引导),这些问题确实会起作用。

任何想法。

最佳答案

只是回答这个问题:

我简单地在 server.ts 中制作了一个自定义解决方案:

const cache = {};

function ngApp(req, res) {
let baseUrl = '/';
let url = req.originalUrl || '/';
res.setHeader('Cache-Control', 'public, max-age=300');
if (cache.hasOwnProperty(url)) {
var hit = cache[url];
if (hit[0] > Date.now()) {
res.status(200).send(hit[1]);
return;
}
}

res.render('index', {
req,
res,
ngModule: MainModule,
preboot: {
appRoot: ['app'],
uglify: false,
buffer: true
},
async: false,
baseUrl: baseUrl,
requestUrl: req.originalUrl,
originUrl: 'http://localhost:3000'
},(err, html) => {
cache[url] = [Date.now()+180000,html];
res.status(200).send(html);
});
}
app.get('*', ngApp);
app.get('/', ngApp);

所以基本上我会检查内存变量是否有所请求的 url 的现有缓存条目,如果没有,或者它已过期,那么我会重新渲染页面并更新/创建缓存条目。

这极大地改善了后续请求的交付。本地时间从约 1 秒缩短至仅 10 毫秒。

关于Angular 2通用缓存服务器上渲染的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39872289/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com