移动web开发过程中网速是必须考虑的一个因素,所以一般是尽可能的在本地存储数据,避免弱网环境下请求数据失败导致页面没有内容的情况。

前后端分离是web开发的必然趋势,在PC端我们有时甚至为了避免ajax缓存去做一些处理,但是移动端我们却需要把ajax请求给缓存下来,尤其是json数据。

function ajaxCache(opt){function getStoreKey(opt){var url = opt.url;
//缓存最后面的json文件名var storeKey = url.match(/([^\/]*)\/*$/)[1];var hashStr = url;if (opt.data){hashStr += JSON.stringify(opt.data);}var hash = hashStr;storeKey += hash;return storeKey;}
//加载缓存的数据function loadCachedData(opt, storage){var storeKey = getStoreKey(opt);var data = storage.getItem(storeKey);try{data = JSON.parse(data);} catch(e){Logger.log(storeKey+":缓存数据解析出错");data = null;}return data;}function attachSuccessProxy(opt, storage){var oldSuccess = opt.success;opt.success = function(){var data = arguments[0];if (data){var storeKey = getStoreKey(opt);storage.setItem(storeKey, JSON.stringify(data));}oldSuccess.apply(this, arguments);};}var cachedAjax = function(opt){if (!opt.url){opt.url = location.toString();}if (opt.sessionCache && opt.success){var sessionData = loadCachedData(opt, session);if (sessionData){opt.success(sessionData, 'session');return; // no further request from remote server
            }attachSuccessProxy(opt, session);}if (opt.localCache && opt.success){var localData = loadCachedData(opt, local);if (localData){opt.success(localData, 'local');}attachSuccessProxy(opt, local);}$.ajax(opt);};return cachedAjax;}

转载于:https://www.cnblogs.com/hutuzhu/p/4318254.html

移动web开发ajax缓存操作相关推荐

  1. eclipse下web开发中缓存问题

    eclipse下web开发中缓存问题 原创 2016年04月06日 17:27:14 标签: eclipse / 缓存 / web开发 2351 问题描述:对web文件无论怎么修改,甚至删除,最后都会 ...

  2. 火狐web开发清楚缓存_如何使用Firefox的Web开发工具

    火狐web开发清楚缓存 Firefox's Web Developer menu contains tools for inspecting pages, executing arbitrary Ja ...

  3. web开发浏览器缓存问题之Google浏览器缓存清理

    google浏览器设置不缓存的方法 摘要:当我们在做web开发特别是在调试js代码时,会经常使用的Google浏览器,这个时候就会碰到我们写的js代码不能及时生效的问题.这是因为我们所用的Google ...

  4. eclipse web开发 AJAX实例以及URL和Tomcat细节

    我一定要发个博客,在这个毫无技术性的错误上纠结了好久好久,浪费了大量青春! 写给跟我一样的新手!希望你们不要像我一样走这么多的弯路!!! 新建web项目我不说了,百度起来很简单,下面先说AJAX实例: ...

  5. asp.net web 开发登录相关操作的控件LoginName、LoginStatus和LoginView控件使用详解

    http://book.51cto.com/art/200909/154039.htm http://book.51cto.com/art/200909/154041.htm ASP.NET提供了一套 ...

  6. 幻灯片:Web开发中的缓存

    这是我昨天在博文视点Open Party上海站上关于Web开发中缓存的简单讲座.原本博文视点的朋友们希望我讲一下ASP.NET MVC方面的话题(估计看我最近一直在搞这个),但是我觉得其他平台一直用的 ...

  7. 360浏览器 ajax取缓存,web开发遇到的坑之360浏览器缓存问题

    web开发遇到的坑之360浏览器缓存问题 再使用360浏览器,浏览我自己开发的一个配置的web管理后台时,发现,使用ctrl+F5都不能刷新表格的数据,还有,我添加字段时,明明是添加成功的,用sql再 ...

  8. 前端笔记(Html+CSS+JS+DOM+网页特效+jQuery+HTML5+CSS3+canvas 标签+web开发重难点+面向对象+AJAX)

    第1章Html Html:超级文本标记语言(HyperText Markup Language),在浏览器上运行的一种标记语言. 就是给文本加上含有语义的标签. 接下来应该学习更多具体语义标签: 一. ...

  9. 名师讲坛——Java Web开发实战经典基础篇(JSP、Servlet、Struts、Ajax)

    [书名]<名师讲坛--Java Web开发实战经典基础篇(JSP.Servlet.Struts.Ajax)> [作者]李兴华.王月清 [ISBN]9787302231585 ­}:YKf: ...

最新文章

  1. 大话RxJava:一、初识RxJava与基本运用
  2. 怎么解决svn清理失败且路径显示乱码问题
  3. clickhouse官方文档_clickhouse分析:chproxy使用
  4. an tu tu html5 test,Design an Accuracy Test System for Resolver-To-Digital Converter Based on PXI
  5. mysql 检查_检查MySQL的健康状况
  6. 强制将IE,Chrome设置为指定兼容模式来解析
  7. Hadoop入门进阶步步高(三-配置Hadoop
  8. php ora-12154,ORA-12154 和 TNS-03505 监听错误的解决方法
  9. 2016年4月计算机组成原理试题答案,全国2018年4月自考(02318)计算机组成原理试题及答案...
  10. 常用的C#正则表达式! [转]
  11. 基于深度学习的自动化行人检测和监控系统
  12. 微信小程序在组件中关闭小程序
  13. hibernate----继承
  14. Vue的生命周期函数和beforeRouteEnter()/beforeRouteLeave()的函数
  15. 相见恨晚的 18 个 Linux 趣味命令,最后一个千万要尝试~
  16. 方波峰峰值和有效值_峰峰值,峰值,平均值,有效值的关系.pdf
  17. python箱线图标注单位_【可视化】箱线图异变标注
  18. java计算机毕业设计高校多媒体设备报修管理系统源码+mysql数据库+系统+lw文档+部署
  19. 计算机网络和internet选项,大师为你详解win10系统设置Internet选项的处理
  20. fiddler抓包史上最完整细致的步骤(抓包微信小程序解决无法Iphone无法上网)

热门文章

  1. 从零开始html css,HTML/CSS从零开始-常用属性(三)
  2. linux复制文件快捷键,Linux基础学习(基本命令和文件操作)
  3. 用c语言描述单链表的数据类型,数据结构—单链表(类C语言描述)
  4. 泛域名解析怎么做php,nginx如何做泛域名解析
  5. python集合属性方法运算_Python基础__字典、集合、运算符
  6. koa mysql 存储过程_Sql中判断数据库、表、临时表、存储过程和列是否存在...
  7. 计算机课怎样回归老师控制,职业学校计算机专业课堂回归真学习
  8. 如何通过其他主机查看Apahce服务器的运行状态
  9. luogu P4183 Cow at Large P (暴力吊打点分治)(内有时间复杂度证明)
  10. 通过cordova将vue项目打包