首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

AngularJS进阶(十五)Cookie ‘data‘ possibly not set or overflowed because it was too large

  • 23-11-14 10:02
  • 2457
  • 8375
blog.csdn.net

Cookie 'data' possibly not set or overflowed

 because it was too large (5287 > 4096 bytes)!

注:请点击此处进行充电!

故事起源

      项目开发过程中遇到以上问题,刚开始以为只是个警告,没太在意。后来发现直接影响到了程序的执行效果。果断寻找解决方法。

问题分析

    根据Chrome浏览器信息定位,显示以下代码存在错误:

$cookieStore.get("data")

    由于自己在程序使用cookieStore存储了大量所需数据,其数据量超过了cookie默认设定的存储值4K,故会报错。

    换用instance试试。问题成功解决,实践证明:instance比cookieStore好用。

刨根问底

1.cookieStore默认存储多少数据?可否更改默认存储数据?

        经过网络查询也没能获得明确答案,不过从提示可以看出,其可存储数据空间就是4K,而且其提供的方法只有put、get、remove三种,故得知更改其默认存储数据空间是不现实的事情。

2.从cookieStore获取数据后,系统自己释放存储空间,还是必须得手动释放?是不是类似于java的垃圾回收机制?

        凭借直觉,cookieStore应该类似于java的垃圾回收机制,就算没有人工编码实现释放cookieStore所占用的存储空间,系统也会在其生命周期结束后释放其存储空间。最佳实践是:当从cookieStore中取出所需数据,不再需要cookieStore时,应收到释放其所占用的内存空间。这样才是合理的设计。

3.cookieStore与instance的区别?

        如上述所分析,从内存占用的角度考虑,cookieStore中存储的数据置于内存之中,实实际际的占用内存空间。而instance类似于指针,只是其指向的是一个对象地址,其对象是可以存储任意内容、格式、大小的数据的,不受内存所限。

注:有关instance的详情请点击此处.

附:使用步骤

    AngularJS 提供了很好的 $cookie 和 $cookieStore API 用来处理 cookies 。 

    这两个服务都能够很好的发挥HTML5 cookies,当HTML5 API可用时浏览器会选择使用HTML5提供的API,如果不可用则默认选择document.cookies。无论那种方式,你都可以选择使用相同的API来进行工作。

Step 1 - include cookies module

第一步加载JS文件,并且依赖 cookie module

 

  1. <script src="http://code.angularjs.org/1.2.9/angular-cookies.min.js">script>

 

创建 angular module

    var DemoApp = angular.module( 'DemoApp', ['ngCookies'] ).config( demoConfig );

Step 2 - Inject into controller

    将cookie module 注入到 controller 中

 

DemoApp.controller('DemoController', function($cookieStore, $scope, $location, $routeParams, $http , $timeout ){ .. body here .. })

 

Step 3 - Using the $cookieStore

    现在可以使用put、get 、remove方法操作 cookie , $cookieStore 可以直接存储对象到cookie中,它会使用angularjs 的 toJson/fromJson 自动序列化和反序列化

 

  1. $cookieStore.put("name","my name");
  2. $cookieStore.get("name") == "my name";
  3. $cookieStore.remove("name");
  4. $cookieStore.put("persion", {
  5. name: "my name",
  6. age: 18
  7. });
  8. $scope.person = $cookieStore.get("persion");

 

Step 4 - Using the $cookie

  1. DemoApp.controller('DemoController', function ($cookies, $scope) {
  2. $cookies.myFavorite = 'oatmeal haha';
  3. })

 
注:本文转载自blog.csdn.net的No Silver Bullet的文章"http://blog.csdn.net/sunhuaqiang1/article/details/50157121"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

101
推荐
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2025 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top