从Wep page到Application

需要做一个选择,是Web app还是Native app,当然,还有第三种选择,Hybrid app。

现在手机用户越来越多,电脑终端浏览器也在不断的更新换代,推陈出新,网页已经不仅仅是用来分享信息这么简单,可以用来做更多的事情。

本地存储升级

在以前,浏览器几乎不具备太多的存储能力。HTML5在存储方面做了重大的改进,提供了localStorage和sessionStorage对象用于小型数据的存储,更提供了WebDatabase以存储大量数据。

cookie与cookie的局限

Http本身是一种无状态无链接的协议,用户在浏览器上请求一个动作时,服务器不会知道用户上次动作做了什么,因此,如果要存储注入登录与否、已登录文本等状态信息是非常麻烦的。cookie的发明则满足了大部分的状态存储的需求。从根本上讲,cookie就是一段存储在客户端(浏览器)的文本,我们既可以在服务器响应返回时设置cookie,也可以在前端通过javascript进行修改。cookie有域限制,不同域的cookie相互不影响,也不能互相访问。

可以在谷歌浏览器的控制台输入document.cookie来查看当前网页所有可用的cookie,也可以通过这样的方式document.cookie="uid=123"来设置cookie,这条语句不会覆盖之前的cookie,只是自动添加到原先cookie的后面,不同的键值对用";"分隔。除了域的限制以外,还有一个大小和数量的限制对于我们数据存储来说,影响很大。不同的浏览器采用了不同的限制策略,但都不会很多。

来自HTML5的Web Storage

相比较于cookie而言,HTML5规范中的WebStorage更适合用作本地数据存储。Web Storage的使用非常方便,速度更快也更安全,只会存储在浏览器中而不会随HTTP请求发送到服务器端。它可以轻松存储大量数据而丝毫不会影响你网站的性能。

Web Storage使用

浏览器已经内置了两个已经实例化好了的对象,一个是sessionStorage,另一个是localStorage。

其中sessionStorage中存储的数据只是在单页面会话期间有效,sessionStorage更类似于一个页面上的全局变量。而localStorage的数据则会被持久化到客户端,而且永远不会过期(cookie可以设置过期时间),并且其容量也不会像cookie那样受限。

无论是sessionStorage还是localStorage,都可以使用下述这些方法或属性:

setItem(key,value)????getItem(key)????removeItem(key)????length????key(n)????clear()

这两者的区别是存储数据的声明周期不一样,只要一直在这个域内连续访问,存储在sessionStorage的数据会一直存在,一旦关闭页面或浏览器,所有sessionStorage存储的数据都会消失(也就是说,sessionStorage不会将数据存入磁盘)。

storage事件

对Storage对象进行的所有修改都会触发文档上的storage事件。其中事件对象会有以下属性:

domain????????key???? oldValue????newValue

例如:

document.addEventListener("storage", function(e) {console.log("Storage changed. Name ‘" + e.Key +"‘"); });

由于这个事件有兼容性问题,一般不建议使用。

当然,并不是说localStorage大小可以无限使用,对于不同的浏览器,有不一样的设定,但大体上会给每个域设有5MB的存储空间,这对于大多数应用来说,已经足够了。

缓存和应用缓存

HTML5提供了一种独特的缓存机制:Application Cache(应用缓存)

顾名思义,这是为应用程序而生的缓存机制。主要是可以将服务器端的资源文件缓存至本地,至少有以下三个有点:

加速应用启动速度---省却了下载文件的时间

离线访问--利用离线缓存下来的页面和文件资源继续未完成的工作

节省服务器资源--更少的请求,意味着更小的服务器压力。

应用缓存的基本使用

一般而言,针对单页应用启用。

manifest

在文档中开启应用缓存非常简单,只需要在HTML标签中添加一个manifest属性,并指定manifest文件即可。

<!DOCTYPE html>

<html manifest="/appcache.manifest">

//这个html文件本身一定会被缓存

</html>

而appcache.manifest其实就是一个文本文件,里面指定了需要浏览器缓存的资源,比如像下面这个样子:

CACHE MANIFEST

index.html

stylesheet.css

images/logo.png

scripts/main.js

浏览器首次加载页面时会读取该文件,并下载和缓存它指定的资源,上面例子中缓存了四个文件,由于缓存是一次性的,因此如果四个文件有任何一个文件不可用,整个缓存行为将失败。除了文件中指定的四个需要缓存的文件以外,指定manifest文件的html文档也会被缓存下来。

时间: 2024-10-14 10:27:44

从Wep page到Application的相关文章

SpringBoot启动报错【This application has no explicit mapping for /error.....】

今天做SpringBoot小例子,在请求controller层的时候出现如下问题. Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Wed Dec 14 16:35:25 CST 2016 There was an unexpected error (type=Not Found, status=404). No mes

Optimizing TLB entries for mixed page size storage in contiguous memory

A system and method for accessing memory are provided. The system comprises a lookup buffer for storing one or more page table entries, wherein each of the one or more page table entries comprises at least a virtual page number and a physical page nu

springboot的页面出现Whitelabel Error Page

Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Fri Sep 06 21:41:26 CST 2019 There was an unexpected error (type=Not Found, status=404). No message available 导致的原因就是主方法放的包,位置有问题,我百度很多都是

SpringBoot启动项目之后,访问页面出现Whitelabel Error Page

话说万事具备,只欠东风- 蹭闲暇时来跑个SpringBoot项目玩玩,把一切配置依赖准备就绪之后打算运行项目. Staring...... 接着,在浏览器输入地址 localhost:8080/hello 很惊讶的看见 Whitelabel Error Page This application has no explicit mapping for /error, so you are seeing this as a fallback. Sat Jan 18 22:33:51 CST 202

vue.js路由

Vue.js 路由 Vue.js 路由允许我们通过不同的 URL 访问不同的内容. 通过 Vue.js 可以实现多视图的单页Web应用(single page web application,SPA). Vue.js 路由需要载入 vue-router 库 中文文档地址:vue-router文档. 安装 1.直接下载 / CDN https://unpkg.com/vue-router/dist/vue-router.js NPM 推荐使用淘宝镜像: cnpm install vue-route

Struts2学习第三课 访问Web资源

1.什么是WEB资源? HttpServletRequest,HttpSession,ServletContext等原生的Servlet API. 2.为什么访问WEB资源? B/S的应用的Controller中必然需要访问WEB资源,例如,向域对象中读写属性,读写Cookie,获取realPath等等. 3.如何访问? 在Action中,可以通过一下方式访问web的HttpSession,HttpServletRequest,HttpServletResponse等资源 与Servlet AP

前端资源教程合集

综合类 前端知识体系 前端知识结构 Web前端开发大系概览 Web前端开发大系概览-中文版 Web Front-end Stack v2.2 En类资源汇总 免费的编程中文书籍索引 前端书籍 前端免费书籍大全 前端知识体系 免费的编程中文书籍索引 智能社 - 精通JavaScript开发 重新介绍 JavaScript(JS 教程) 麻省理工学院公开课:计算机科学及编程导论 JavaScript中的this陷阱的最全收集--没有之一 JS函数式编程指南 JavaScript Promise迷你书

动态页面 servlet

1.常见软件架构. C/S: 客户端 服务器  安全性较好,但是升级需要升级两端   B/S: 浏览器 服务器  安全性较差, 但是升级时 只需要升级服务器端(我们今后就是开发这个架构的) 2.资源分类:     静态资源: 无论访问多少次 内容都不会发生变化. html .css .js .     动态资源: 访问结果会发生变化. servlet,jsp . jsp就是servlet. php,asp. 3.常见服务器: tomcat 4.tomcat 会以下配置:     1.修改tomc

Vue 全家桶 + Express 实现的博客(后端API全部自己手写)

为什么学习并使用Vue 1.发展趋势 最近这几年的前端圈子,由于戏台一般精彩纷呈,从 MVC 到 MVVM,你刚唱罢我登场. backbone,AngularJS 已成昨日黄花,reactjs 如日中天,同时另一更轻量的 vue 发展势头更猛,号称兼具了 angularjs 和 reactjs 的两者优点. 2.Vue能干吗 移动端的上网需求已经远高于pc端,特别是 hybrid 方式的H5应用中,但是性能问题一直是痛点. 如果使用 SPA(就是俗称的单页应用(Single Page Web A