我按照教程将 Universal 集成到我们的 Angular 9 应用程序中。现在我们已经配置了 server.ts。
在每个教程中我都会看到:
// Example Express Rest API endpoints
// app.get('/api/**', (req, res) => { });
Run Code Online (Sandbox Code Playgroud)
进而:
server.get(
'*.*',
express.static(distFolder, {
maxAge: '1y',
})
);
Run Code Online (Sandbox Code Playgroud)
如果我们像这样保留它,我想每个请求都会被缓存,/api 的内容也会被缓存。这是正确的吗?我们的应用程序有很多“产品页面”,其中库存和价格可能会经常变化。因此,我们需要始终拥有新鲜的库存和价格。因此,我不会缓存从“/api/”路径(或https://api.my-app.com “,如果需要绝对路径)中的 API 调用返回的服务器数据。保留所有内容如果我没记错的话,上面写的应该缓存所有内容。我做了一个测试,直接在数据库中更改价格,我希望看到旧的价格,但事实并非如此,我总是看到新鲜的。所以我怀疑是缓存机制不起作用。而且当我浏览组件时,我继续看到每个 api 调用(未缓存)
有人可以更好地解释一下这个机制吗?
另一个问题是:如果缓存有效,如何在节点中清除它?节点将所有内容缓存在内存中。我认为当我们停止节点时缓存会被清除。这是正确的吗?
这是我的包 json:
"scripts": {
"ng": "node --max_old_space_size=8192 node_modules/@angular/cli/bin/ng",
"start": "npm run ng -- serve",
"serve:server": "node ./dist-server/main.js",
"serve:server:debug": "node --inspect ./dist-server/main.js",
"start:server": "npm run build:server && node ./dist-server/main.js",
"start:server:debug": "npm run build:server && node ./dist-server/main.js --inspect",
"build": "npm run ng …Run Code Online (Sandbox Code Playgroud)