JS前端缓存的实现方法及 Cookie的特点介绍

在前端浏览器中,有些数据(比如数据字典中的数据),可以在第一次请求的时候全部拿过来保存在js对象中,以后需要的时候就不用每次都去请求服务器了。对于那些大量使用数据字典来填充下拉框的页面,这种方法可以极大地减少对服务器的访问。这种方法特别适用于使用iframe的框架。

本文主要和大家详细介绍了JS实现前端缓存的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家。

具体实现思路和方法:

创建一个cache.js文件:

1、前端页面,定义那些数据需要一次性拿到前端缓存,定义一个对象来保存这些数据:

立即学习“前端免费学习笔记(深入)”;

/** * 定义需要在用户登录的时候获取到本地的数据字典类别 */var clsCodes = {clsCodes :    [BOOL,     STATUS,     USER_TYPE,     REPORT_STATUS   ]}; /** * 获取数据字典到本地 */var dicts;

登录后复制

2、前端页面,定义一个函数来调用后台接口获取数据,然后保存到本地缓存对象(dicts)中。

function getDicts() {  $.post(getContextPath() + /api/sys/getDictList,      clsCodes,      function(resultBean, status, xhRequest) {        if (resultBean.data != undefined) {          dicts = resultBean.data;        }      },       'json');}

登录后复制

在主页面加载的时候调用这个方法一次性获取数据并缓存起来。这样,以后需要同样的数据,就直接从本地对象dicts中获取了。

后端Controller:

3、定义一个接口,根据前端的请求,查询数据库(或查询服务器缓存,如下面例子中)获取数据返回给前端:

/** * 根据多个分类编号获取多个字典集合 * @param clsCodes * @return {{clsCode : {code1:name1,code2:name2...}}, ...} */@SuppressWarnings({ unchecked, rawtypes })@ResponseBody@RequestMapping(getDictList)public ResultBean getDictList(@RequestParam(value = clsCodes[], required = true) String[] clsCodes) {  ResultBean rb = new ResultBean();     Map> dictCache = (Map>) CacheManager.getInstance().get(CacheConstants.DICT);  Map dictMap = new LinkedHashMap(); //使用LinkedHashMap保证顺序   if(dictCache != null){    for(String clsCode: clsCodes){      dictMap.put(clsCode, dictCache.get(clsCode));    }  }else{    rb.setMessage(缓存中拿不到字典信息!);    rb.setSuccess(false);  }   rb.setData(dictMap);  return rb;},>,>

登录后复制

 1.Cookie的特点

1)cookie的大小受限制,cookie大小被限制在4KB,不能接受像大文件或邮件那样的大数据。

2)只要有请求涉及cookie,cookie就要在服务器和浏览器之间来回传送(这解释为什么本地文件不能测试cookie)。而且cookie数据始终在同源的http请求中携带(即使不需要),这也是Cookie不能太大的重要原因。正统的cookie分发是通过扩展HTTP协议来实现的,服务器通过在HTTP的响应头中加上一行特殊的指示以提示浏览器按照指示生成相应的cookie。

3)用户每请求一次服务器数据,cookie则会随着这些请求发送到服务器,服务器脚本语言如PHP等能够处理cookie发送的数据,可以说是非常方便的。当然前端也是可以生成Cookie的,用js对cookie的操作相当的繁琐,浏览器只提供document.cookie这样一个对象,对cookie的赋值,获取都比较麻烦。而在PHP中,我们可以通过setcookie()来设置cookie,通过$_COOKIE这个超全局数组来获取cookie。

cookie的内容主要包括:名字,值,过期时间,路径和域。路径与域一起构成cookie的作用范围。若不设置过期时间,则表示这个cookie的生命期为浏览器会话期间,关闭浏览器窗口,cookie就消失。这种生命期为浏览器会话期的cookie被称为会话cookie。会话cookie一般不存储在硬盘上而是保存在内存里,当然这种行为并不是规范规定的。若设置了过期时间,浏览器就会把cookie保存到硬盘上,关闭后再次打开浏览器,这些cookie仍然有效直到超过设定的过期时间。存储在硬盘上的cookie可以在不同的浏览器进程间共享,比如两个IE窗口。而对于保存在内存里的cookie,不同的浏览器有不同的处理方式。

相关推荐:

使用JS实现前端缓存

以上就是JS前端缓存的实现方法及 Cookie的特点介绍的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2787112.html

(0)
上一篇 2025年3月8日 18:02:57
下一篇 2025年3月8日 18:03:03

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • JS正则实现密码强度验证功能

    本文主要和大家介绍js基于正则表达式实现的密码强度验证功能,涉及javascript事件响应及基于正则的字符遍历、判断等相关操作技巧,需要的朋友可以参考下,希望能帮助到大家。 具体代码如下: nbsp;html>    www.jb5…

    编程技术 2025年3月8日
    200
  • JavaScript中new操作符详解

    javascript里实例化一个对象的时候,我们常用的方法就是使用new操作符。  本文主要和大家分享javascript中new操作符详解,希望能帮助到大家。 var Foo = function(x, y) { this.x = x t…

    编程技术 2025年3月8日
    200
  • JavaScript闭包详细介绍

    本文主要和大家详细介绍javascript闭包,说起闭包,相信写前端的同学都知道,而且相信在实际的项目中或多或少都已经用到了闭包。那到底什么才是闭包,闭包又是怎么产生的呢? 1. 什么是闭包在阮老师的文章中提到: 闭包就是能够读取其他函数内…

    编程技术 2025年3月8日
    200
  • JavaScript焦点进入文本框内关闭输入法代码分享

    js实现焦点进入文本框内关闭输入法:imemode本文主要和大家分享js实现焦点进入文本框内关闭输入法,代码简单易懂,非常不错,具有参考借鉴价值,需要的朋友参考下吧,希望能帮助到大家。 要用到的东西: imeMode:xxx 有四个参数 a…

    编程技术 2025年3月8日
    200
  • Node.js中通用基础设计模式实例分析

    一般我们对node.js中设计模式(观察者) 或 factories(工厂方法)比较熟悉,本文重点给大家介绍node.js一些基础模式的实现方法,感兴趣的朋友跟随脚本之家小编一起学习吧,本文不并专门探讨他们。只是探讨node.js一些基础模…

    编程技术 2025年3月8日
    200
  • Javascript将变量转换为字符串代码分享

    大家应该都知道,对于javascript,有3种不同方法可以将变量转换为字符串。这篇文章将详细介绍这些方法,并比较他们的优劣。本文主要和大家介绍关于javascript中将变量转换为字符串的三种方法,这三种方法分别是:value.tostr…

    编程技术 2025年3月8日
    200
  • JS中的this、apply、call、bind实例分享

    this 的指向 在 ES5 中,其实 this 的指向,始终坚持一个原理:this 永远指向最后调用它的那个对象,来,跟着我朗读三遍:this 永远指向最后调用它的那个对象,this 永远指向最后调用它的那个对象,this 永远指向最后调…

    编程技术 2025年3月8日
    200
  • JavaScript中的this规则及this对象用法实例

    想要确定this里规则是什么,几条规则确定函数里的 this 是什么。想确定 this 是什么其实非常简单。总体的规则是,通过检查它的调用位置,在函数被调用的的时候确定 this。它遵循下面这些规则,接下来以优先级顺序说明。 规则 1、如果…

    编程技术 2025年3月8日
    200
  • 如何在Node.js中使用原生ES模块

    从版本 8.5.0 开始,node.js 开始支持原生 es 模块,可以通过命令行选项打开该功能。新功能很大程度上得归功于 bradley farias。本文主要和大家介绍在 node.js 中使用原生 es 模块方法解析,还有部分内容的链…

    编程技术 2025年3月8日
    200
  • 实例详解js中ajax访问

    本文主要和大家介绍原生js中ajax访问的实例详解的相关资料,希望通过本文大家能够掌握理解这部分内容,需要的朋友可以参考下,希望能帮助到大家。 原生js中ajax访问的实例详解 form表单中 登录名: 失去光标即触发事件 function…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论