Angular 服务器端渲染应用的开箱即用的缓存功能问题

Angular 服务器端渲染应用的开箱即用的缓存功能问题

关于通过 Angular Universal 渲染出的页面源代码,我们有两种缓存方式:

  1. HTTP cache

使用网络缓存时,一切都是为了在服务器上设置正确的响应标头。 它们指定缓存生存期和缓存策略。一个例子如下:

Cache-Control: max-age = 31536000

选项适用于未经授权的区域和存在长时间不变数据的情况

  1. In Memory cache

内存缓存可用于应用程序本身的渲染页面和 API 请求。 两种使用场合都通过开发包 @ngx-ssr/cache 提供。

将 NgxSsrCacheModule 模块添加到 AppModule 以缓存 API 请求并在浏览器中的服务器上。

maxSize 属性负责最大缓存大小。 值 50 表示缓存将包含超过 50 个来自应用程序的最后 GET 请求。

maxAge 属性负责缓存生命周期。 以毫秒为单位指定。

使用代码如下:

import { BrowserModule } from '@angular/platform-browser';import { NgModule } from '@angular/core';import { AppComponent } from './app.component';import { NgxSsrCacheModule } from '@ngx-ssr/cache';import { environment } from '../environments/environment';@NgModule({  declarations: [AppComponent],  imports: [    BrowserModule,    NgxSsrCacheModule.configLruCache({ maxAge: 10 * 60_000, maxSize: 50 }),  ],  bootstrap: [AppComponent],})export class AppModule {}

例如,同一包@ngx-ssr/cache 中的所有内容都有一个子模块@ngx-ssr/cache/express。 它导入一个 withCache 函数。 该函数是渲染引擎的包装器。使用方法如下:

import { ngExpressEngine } from '@nguniversal/express-engine';import { LRUCache } from '@ngx-ssr/cache';import { withCache } from '@ngx-ssr/cache/express';server.engine(  'html',  withCache(    new LRUCache({ maxAge: 10 * 60_000, maxSize: 100 }),    ngExpressEngine({      bootstrap: AppServerModule,    })  ));

虽然可以从服务器渲染静态网站,但这种方法有很多限制,包括代码重复和缺乏灵活性——尤其是在从数据库读取数据时。 幸运的是,Express.js 提供了一种通过模板引擎从服务器端应用程序创建动态 HTML 页面的方法。

模板引擎以一种相当简单的方式工作:创建一个模板,并使用适当的语法将变量传递给它。 然后,在渲染模板的适当路径上,将值分配给模板文件中声明的变量。 这些是在模板渲染时实时编译的。

模板引擎的一个基本特征是它们允许我们创建称为部分的可重用组件,这些组件可以在其他文件中重用。 这有助于防止代码重复并使更改更易于实施。

有各种各样的模板引擎可以与 Express 一起使用。 Express 中的默认模板引擎是 Jade,现在称为 Pug。 但是,Express 中默认安装的 Jade 仍然使用旧版本。

免责声明:本网信息来自于互联网,目的在于传递更多信息,并不代表本网赞同其观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,并请自行核实相关内容。本站不承担此类作品侵权行为的直接责任及连带责任。如若本网有任何内容侵犯您的权益,请及时联系我们,本站将会在24小时内处理完毕。
相关文章
返回顶部