缓存数据库是现代Web应用程序设计中的一种更佳实践。它通过将频繁使用的数据存储在本地,从而大大提高了数据检索速度和系统响应时间。Angular技术带来的好处之一就是它可以轻松地实现缓存数据库。本文将讨论Angular技术如何实现缓存数据库,并介绍它的各种好处。
让我们了解Angular中的缓存数据库是如何工作的。Angular提供了两种缓存数据库构建器:原生和HTTP。原生构建器可以在客户端使用任何类型的缓存数据库进行缓存,而HTTP构建器则与Angular的HttpClient密切集成,可以在发送HTTP请求时通过HttpInterceptors向响应添加缓存逻辑。下面我们将着重介绍HTTP构建器。
为了开始使用缓存数据库,我们需要创建一个适当的HttpInterceptor。这个拦截器是一个可复用的服务,我们可以在项目中的任何地方使用它。在这个拦截器中,我们定义了缓存数据库的行为,包括缓存的存储时间、缓存拦截请求、缓存到期时清除缓存等。下面是一个示例拦截器的代码:
“`typescript
import { Injectable } from ‘@angular/core’;
import { HttpInterceptor, HttpRequest, HttpResponse, HttpHandler } from ‘@angular/common/http’;
import { Observable, of } from ‘rxjs’;
import { tap } from ‘rxjs/operators’;
@Injectable()
export class CacheInterceptor implements HttpInterceptor {
private cache = new Map();
intercept(req: HttpRequest, next: HttpHandler): Observable> {
const cachedResponse = this.cache.get(req.url);
if (cachedResponse) {
return of(cachedResponse);
}
return next.handle(req).pipe(
tap(event => {
if (event instanceof HttpResponse) {
this.cache.set(req.url, event);
}
})
);
}
}
“`
在这个拦截器中,我们创建了一个名为cache的Map,用于存储与url相关联的响应。在拦截请求时,我们首先在cache中查找是否已经缓存了该请求的响应。如果已经缓存了,则简单地返回响应。如果未缓存,则发送请求并拦截响应。在拦截响应时,我们将响应存储到cache中,以备将来使用。
有了这个拦截器,我们就可以通过向HttpClient中添加拦截器来实现应用程序范围的缓存。下面是一个示例方法,该方法使用HttpClinet从服务器获取某些数据:
“`typescript
import { Component } from ‘@angular/core’;
import { HttpClient } from ‘@angular/common/http’;
@Component({
selector: ‘app-root’,
templateUrl: ‘./app.component.html’
})
export class AppComponent {
data;
constructor(private http: HttpClient) {}
loadData() {
const url = ‘https://jsonplaceholder.typicode.com/todos/1’;
const options = { headers: { ‘Cache-Control’: ‘max-age=5’ } };
this.http.get(url, options).subscribe(response => this.data = response);
}
}
“`
在这个方法中,我们对请求添加了一个名为Cache-Control的标头,该标头指示缓存存储时间为5秒。在调用get方法时,HttpClient会调用我们的拦截器,如果缓存中已经存在响应,则返回缓存的响应,否则发送请求并存储响应。
现在,让我们看看Angular缓存数据库的各种好处:
1. 提高了应用性能:通过使用缓存数据库,我们可以避免每次请求都从服务器获取数据。这可以大大提高数据检索速度和系统响应时间,从而提高了应用整体性能。
2. 减少了服务器负载:由于客户端缓存了大部分数据,因此服务器不必承担重复的请求。这将减轻服务器的负担,使其更容易扩展以支持更多的用户。
3. 改善了用户体验:由于数据在本地缓存,因此即使没有网络连接,应用程序也可以继续运行。这大大改善了用户的体验,使他们可以在没有网络连接的情况下继续使用应用程序。
4. 更好的离线体验:缓存数据库使得应用程序可以在离线模式下提供良好的用户体验。如果用户在没有网络连接的情况下使用应用程序,缓存的数据将允许他们继续查看先前查看过的数据,而不必担心数据的缺失。
5. 降低了成本:缓存数据库可以减少向服务器发出请求的数量。这将减少服务器资源的使用,因此减少了部署和维护应用程序的成本。
成都网站建设公司-创新互联为您提供网站建设、网站制作、网页设计及定制高端网站建设服务!
1.页面缓存。页面缓存指之前加载过的页面以文件方式缓存在服务器中,在一段时间内再次加载相同页面时无需重新执行页面逻辑直接加载静态页面。rubyPHP的页面缓存是自动进行的,在config/tpl.php中可配置是否启用缓存以及缓存文件的有效期。当然这仅仅是全局设置,在调用视图时可重新指定是否启用缓存以及缓存有效期。
2.SQL缓存。sql缓存指之前执行过的查询sql语句以及他的结果缓存在内存中,在一段时间内用相同的sql语句执行查询操作时不经过数据库直接返回内存中数据。rubyPHP使用Redis以键值方式缓存sql语句以及他的对应结果。rubyPHP能够在php7上完美运行。(附:关于windows php7 redis 扩展的下载参蠢笑照我的另一篇博客:
)。rubyPHP重写了mysql_query以及mongo_query方法,在执行查询sql查询语句时会优先加载未过期的缓存数据。与页面缓存类似,sql缓存的全局配置路径为config/redis.php,在具体执行sql语句前可重新执行是否使用缓存以及缓存有效期。
3.读写分离。读写分离是建立在主从同步基础上为了减轻服务器压力,将查询语句转移到从服务器上执行的解决方案。rubyPHP重写了mysql_query,mongo_query函数,除了对查询语句进行内存级缓存的优化,同时也将查询语句放到了从服务器上执行。mysql的主从配置文件路径为config/mysql.php。
4.html压缩。html压缩配合页面缓存,前者降低了服务器端压力,后者减少了输出内容所占空间,将html文件中的空格换行等进行压缩,减少了输出文件的大小,在一定程度上保护了html的安全。
rubyPHP在代码结构上模仿CI,在功能上模仿thinkPHP。
rubyPHP的功能包含以下几方面:
1.使用了thinkPHP的M方法操作数据库。对于一些简单的sql语句无需手工写,用熟悉的M()->where()->limit()->find()这样的语法即可完成。曾经面试有人问我为什么thinkPHP的M方法能够进行连续操作,现在终于明白是使用了单利模式。
2.屏蔽了数据库的差异。M方法的另一个优点是用来组件sql语句,对高层屏蔽数据库差异。当然,对于复杂的查询,M方法是做不到的,此时可以使用已被重写过的mysql_query以及mongo_query执行你的sql语句。
3.自定义路由。这一点模仿了CI的route.php,将url同咐核控制器的映射关系写到一个配置文件里。
不足之处:
view文件不支持变量循环输出。目前的解决方案是使用angularjs调用接口在页面输出内容。框架示例程序便是一个使用angularjs的和bootstrap的界面带简含。
1.安装@angular/material、@angular/cdk
cnpm install –save @angular/material @angular/cdk
2.app.module.ts导入模块
3.在当前组件引入
html
css
1.Context Variables
使用*cdkVirtualFor,我们有一些上下文变量:index, count, first, last, even, odd.
2.视图回收
为了提高渲染性能, *cdkVirtualFor 会缓存那些曾经创建过但不再需要的视图。当要创建一个新视图时,会转而复用一个已缓存的视图。可以通过 templateCacheSize 属性来调整视图缓存的大小。把这个大小设置为 0 会禁用缓存。如果你的模板在内存方面很昂贵,你可能会希望减小这个数字,以免在模板缓存上花费太多内存。
3.固定超过滚动视图的item个数
minBufferPx maxBufferPx
当所有条目都是固定大小时,你可以使用 FixedSizeVirtualScrollStrategy。可以用 itemSize 指令轻松地将它添加到视口中。这种约束的优点是它可以提供更好的性能,因为在渲染条桐袭滚目时不需要进行测量。
固定大小的策略也支持设置一些缓冲区参数,用来决定渲染多少额外内容,也就是视口可见内容之外的部分。之一个参数是 minBufferPx。 minBufferPx 是视口必须渲染的最小内容缓冲区数量(以像素为单位)。如果视口检测到要缓冲的内容小于这个数量(未填满),就会立即渲染更多内容。 第二个参数是 maxBufferPx。它会告诉视口当检测到需要更多缓冲区的时候要渲染多少个备用缓冲区空间。
这两个缓冲区参数的作用可以用一个例子来说明。假设我们有以下参数:itemSize = 50、minBufferPx = 100、maxBufferPx = 250。当用户滚动浏览内容时,视口就会检测到只剩下 90px 的缓冲区。由于它小于 minBufferPx,所以视口必须渲染更多缓冲区。它必须渲染足够数量的缓冲区,直到其大于等于 maxBufferPx。在这种情况下,它渲染了4个条目(额外的 200px),使缓冲区总大小达到290px,略高于maxBufferPx 。
4.视口方向
虚拟滚动视口默认为垂直方向,也可局余以设置为 orientation=”horizontal”。在改变方向时,要确保该条目是用 CSS 进行水平布局的。要做到这一点,你可能希望把 .cdk-virtual-scroll-content-wrapper 类作为 CSS 的目标,它是包含待渲染内容的包装元素。
5.数据
*cdkVirtualFor 接受来自 Array、Observable 或 DataSource 的数据。
数据源是一个抽象类,有两个方法:
– connect(): is called by the Viewport to receive a stream that emits the data array.
– disconnect(): will be invoked when the Viewport is destroyed.
例子:
6.trackBy
像 *ngFor 的 trackBy 一样,这里也可以指定 trackBy 函数,工作方式也都一样。传给这个 trackBy 的 index 是在数据源中的索引,而不是在要渲染的这部分数据中的索引。
用函数自己写排序功能:
7.滚动策略禅顷
为了确定整个内容的大小以及它在任何时刻需要实际渲染的内容,视口依赖于所提供的一个 VirtualScrollStrategy。提供它的最简单方式是在视口上使用 itemSize 指令(例如 )。但是,也可以通过创建一个实现 VirtualScrollStrategy 接口的类来提供自定义策略,并在包含此视口的组件上把它提供为 VIRTUAL_SCROLL_STRATEGY。
Angular UI Tree是一个Angular UI 组件,可渣者排序嵌套列表,提供拖放支持,不依赖于jQuery。
特性
使用原生Angular范围数据绑定游梁码
排序并通过整个树移动神哪项目
Prevent elements from accepting child nodes
支持的浏览器
The Angular UI Tree is tested with the following browsers:
Chrome (stable)
Firefox
IE 8, 9 and 10
For IE8 support, make sure you do the following:
include an ES5 shim
make your Angular application compatible with Internet Explorer
use jQuery 1.x
angular 缓存数据库的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于angular 缓存数据库,Angular技术带来的好处:缓存数据库,PHP DUXCMS如何开启页面缓存,angular6.x–虚拟滚动,Angular提供Tree组件吗?能绑定统计数据而非具体数据库字段吗的信息别忘了在本站进行查找喔。
香港服务器选创新互联,香港虚拟主机被称为香港虚拟空间/香港网站空间,或者简称香港主机/香港空间。香港虚拟主机特点是免备案空间开通就用, 创新互联香港主机精选cn2+bgp线路访问快、稳定!
文章标题:Angular技术带来的好处:缓存数据库(angular缓存数据库)
文章URL:http://www.shufengxianlan.com/qtweb/news0/375050.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联