相对路径和绝对路径是用于引用文件,在实际使用中,有些时候适合用相对路径,有些时候适合用绝对路径。
Web 资源在服务器和客户端(浏览器)之间的副本不仅能保存在客户端,也可以保存在服务器端。缓存会根据进来的请求将输出内容的副本保存在服务器内存中;然后,如果下一个请求是相同的 URL,且网页在这段时间内没有更新,服务器就不会再次从硬盘中获取内容,而是直接使用内存中缓存的网页副本,达到节约带宽,减少延迟的作用。
下面我们将介绍一些 OnceIO 中和服务器端缓存有关的函数和属性。
为了提供静态资源,比如图像、CSS 文件和 JavaScript 文件等,可以将这些资源放在专门的文件夹中,然后用 app.static('folder') 将文件夹设置为 static 模式,使其中的资源可以直接被提供,而不参与中间件、Handler、会话、POST 和 Cookie,以达到节约带宽、减少延迟和降低服务器压力的目的。示例代码如下:
app.static('css')
OnceDB是OnceDoc企业内容(网盘)管理系统的底层数据存储机制。它将Redis扩展增强成为一个分布式模式定义内存数据库,它将Redis从一个简单的健/值存储数据库,增强为支持索引和关系查询的模式(schema)数据库。在OnceDB中,数据模式将由具体应用而不是数据库来决定。通过OnceDB您可以自由动态定义数据库模式,或者在扩展模块中修改或扩展展已有的数据库存储模式。OnceDB即拥有内存数据库的强大性能,同时又具备强大的定制和扩展能力。
OnceVI 通过简单的控件拖拉和数据绑定即可显示条形码。基于条形码(Barcode)和二维码(Qrcode),由于其优良的特性在管理信息系统的设计中被广泛使用。目前广泛应用在企业内部管理、生产流程、物流控制系统方面。是报表系统中必不可少的功能特性这一。OnceVI支持直接显示条形码与二维码。只需要简单拖拉即可实现,
OnceIO 提供将一个网页文件嵌套在另一个网页文件中的机制。文件嵌套与模板引擎无关,语法固定为 。
使用网页嵌套时,服务器需要时间加载所有被嵌套网页,因此用户第一次访问时浏览器可能无法显示被嵌套网页的内容,刷新后才能显示完整网页,OnceIO 内置的 preload 方法能解决这个问题。对当前目录下的 html 后缀的文件使用 preload 的示例代码如下:
before函数提供了一种机制,可以在文件接收之前根据req.headers对文件进行验证(如大小、类型),return true 表示验证通并开始接收文件。在这里 before 中的回调函数会根据 req.headers 中的 content-length 判断上传的文件是否超出了尺寸限制(开发人员可以通过修改 if 语句中的常数改变文件上传尺寸上限,content-length 单位为 byte,1024 * 1024 即代表 1 MB),如果超出了,文件不会被上传,服务器返回错误信息;如果没有超出,函数返回值为 true,服务器继续执行 app.file 中的回调函数,将文件从临时地址转移到指定存储地址,文件上传到这里就完成了。
OnceIO 的模块路由和模板注入机制是与其它Web框架最主要的区别之一。软件系统时常需要针对不同的客户定制不同的功能。OnceIO的模块路由可以通过一个扩展包,对系统原有模板(Template)和填充数据(Model)进行重定向或复写。可以在不更改系统源代码的情况下,以非侵入的方式对系统进行深度定制和扩展。
HTTP 是一种无状态的协议,服务器单从网络连接上无从知道客户身份,这给交互式 Web 应用程序的实现带来了阻碍。Cookie 就是用来绕开 HTTP 的无状态性的手段之一。Cookie 实际上是一小段的文本信息。客户端(浏览器)向服务器发送请求,如果 服务器需要记录该用户状态,就会将 Cookie 放在响应头中向客户端浏览器发送。如果浏览器启用了 Cookie,就会把 Cookie 保存起来,并且在再次请求该网站时把请求的网址连同 Cookie 一同提交给服务器。服务器通过读取 Cookie 来辨认用户状态。服务器还可以根据需要修改 Cookie 的内容。