小程序中设置缓存过期的实现方法_javascript技巧

来源:脚本之家  责任编辑:小易  

推荐下载专业数据恢复软件,如国内知名恢复软件-开心手机恢复大师,只需要将工具下载安装到电脑上,然后连接手机到电脑上,并扫描手机中的微信附件数据,即可,微信上的文件已被清理或已过期怎么恢复?,微信文件已过期或已被清理不用设置,可以通过以下方式来实现:一、收到的文件,如果在一周之百内没有进行及时下载,再次点击文度件的时候,就会显示:“文件已过期或已被清理”。不用进行任何的操作,等一个星期就可以了。二、可以通过清理微信缓存数据来清除文件。操作方式如下:1、打开手机屏幕知,找到并点击“微信”,打开微信APP。2、在微信APP界面的最道下方,找到最右边的头像,并点击“我”。3、在页面中找到,并点击齿轮状图形的“设置”图标。4、在弹出的新界面中找到并点击“通用”。5、点击界面最下方的专“微信存储空间”,进入清理缓存的页面。6、点击“清理微信缓存”,就可以把缓存的文件全部清理了,保留的属文件要事先做好备份。本回答被网友采纳,微信上的文件已被清理或已过期怎么恢复?,微信文件过期或者被清理之后zhidao最快速的解决方法就是让对方重新发送一次,如果实在不方便的话只能考虑使用数据恢复软件来操作回了。果师兄提醒您,重要的数据文件需要及时、定期进行备份,避免误删答、误清理之后无法找回www.zgxue.com防采集请勿采集本网。

需求是两张图片在这个时间段内交替显示,当天只弹一次图片。

你好,你可以进入手机恢复模式清除手机缓存文件,长按电源键十秒钟进入关机状态。再同时按住电源键跟音量减键,进入recoveryr模式,选择语言后,点击清除缓存即可,另外可以把手机上不使用的软件

后端返回的数据格式:

您好!很高兴能为您解答, 在打开的小程序设置页面中,我们把“使用我的地理位置”与“答使用我的用户信息”两个设置项的开关关闭即可。这样我们就关闭了小程序的用户授权了

{ "start": "2019/10/08 00:00:00", "end": "2019/10/30 23:59:59", "ads": [ { "image": "xxxx", "uri": "wechat:zhizhuxy666" }, { "image": "xxx", "uri": "wechat:zhizhuxy666" } ]}

公众号主要用于信息的传递实现人与信息的连接,主要以营销和信息传递为主、简单的服务为辅,而小程序主要以功能服务为主。通过以上几方面的对比,大家对微信公众号和小程序也有了一定的了解,微信公众号更

小程序中缓存没有过期时间,也就是说存储进去的缓存要自己手动清除,那么如何保证两张图片能够交替显示呢?

不会,只会清除相机的设置,若要删除手机里的照片,这里以OPPO R9S手机为例,具体方法如下: 一、首先在抄OPPO R9S手机桌面点击“相册”图标,如图所示。二、进入相册以后,找到要删除的照片并

需求分析

    一天只弹一次广告 图片轮流显示 只在时间范围内显示

右击“我的电脑”,左键点“属性”-“高级”-“性能(设置)”-“高级”-“虚拟内存(更改)”-“自定义大小(设置)”根据你物理内存的大小设置为物理内存数值的1.5或2倍大小就行了。

这里有个关键是,如何知道时间有没有到第二天?

思路

需要用到两个缓存:

    showAdvert:用于检测弹窗时间是否在有效期内 showAdvert${currentDay}:用于检测当天是否弹过弹窗

为什么要用到两个?

因为这里有两个状态检测:一个是否在有效期内,一个是当天是否弹过弹窗。

如何判断时间有没有到第二天?

将所有天数的时间戳加上一天保存起来(ps:这个方法很蠢)。然后每次进入小程序都获取下当前的时间,对比下当天的时间是否大于保存的时间戳。如果超过就说明已经到了第二天。

为什么要加上一天?

因为后端返的开始时间是当天的凌晨,而真正要过完这一天是24点之后。一天的毫秒数:24 * 60 * 60 * 1000。

代码实现

变量的声明

声明需要使用的时间戳

const startTempStamp = new Date(item.start).getTime() const endTempStamp = new Date(item.end).getTime()const oneDayTempStamp = 24 * 60 * 60 * 1000 // 一天的时间戳const now = (new Date('2019/09/28 00:00:01')).getTime()

声明需要一共多少天,以及当天是第几天;这里使用Math.ceil()向上取整

const allDay = Math.ceil((endTempStamp - startTempStamp) / oneDayTempStamp)const currentDay = Math.ceil((now - startTempStamp) / oneDayTempStamp)

判断当前时间是否在时间有效期内内,如果在时间有效期内,就弹弹窗,如果不在就不弹

if (now > startTempStamp && now < endTempStamp) { ... //下面弹窗逻辑的实现}else { this.setData!({showAdvert: false}) wx.setStorageSync('showAdvert', false) }

接下来开始写弹出弹窗的逻辑。

弹窗逻辑的实现

首先判断当天的时间戳是否大于前一天的时间戳,如果大于就说明到第二天了,如果小于说明今天还没有过去。

然后清除前一天的缓存

const table = []for (let i = 1; i <= allDay; i++) { table.push(startTempStamp + oneDayTempStamp * i)}if (now > table[currentDay - 2]) { wx.removeStorageSync(`showAdvert${table[currentDay - 2]}`)}

图片交替显示

let n = 0if (currentDay % item.ads.length === 0) { n = 1} else if (currentDay % item.ads.length === 1) { n = 0}

检查当天广告是否弹出过

const advert = wx.getStorageSync(`showAdvert${table[currentDay - 1]}`) || false if (!advert) { this.setData!({showAdvert: true}) wx.setStorageSync('showAdvert', true)}

弹出广告,并设置缓存

const timeStamp = Math.floor(new Date().getTime() / 10000).toString()this.setData!({ advertLink: item.ads[n].image + `?timeStamp=${timeStamp}`, copyWechat: item.ads[n].uri,}, () => { wx.setStorageSync(`showAdvert${table[currentDay - 1]}`, true)})

一进入页面读下本地缓存,是否要弹出弹窗。

onShow(){ const showAdvert = wx.getStorageSync('showAdvert') this.setData!({showAdvert})}

总结

这里最大的问题是如何判断当前的时间有没有过24点,自己一直没有想到比较好的解决方法,限于自己的水平,没有更好的方案,这里我只是记录下实现的过程,不喜勿喷,如果有更好的方案,欢迎指点。

在大多数缓存方案中,当从缓存中移除项后,直到再次需要此项时,才需要将其放回缓存中。典型的开发模式是在使用项之前始终检查该项是否已在缓存中。如果项位于缓存中,则可以使用。如果不在缓存中,则应再次检索该项,然后将其添加回缓存。 但是,在某些情况下,如果从缓存中移除项时通知应用程序,可能非常有用。例如,您可能具有一个缓存的报告,创建该报告需花费大量的时间进行处理。当该报告从缓存中移除时,您希望重新生成该报告,并立即将其置于缓存中,以便下次请求该报告时,用户不必等待对此报告进行处理。为了在从缓存中移除项时能够发出通知,ASP.NET 提供了 CacheItemRemovedCallback 委托。该委托定义编写事件处理程序时使用的签名,当对从缓存中移除项进行响应时会调用此事件处理程序。ASP.NET 还提供 CacheItemRemovedReason 枚举,用于指定移除缓存项的原因。通常,通过在管理尝试检索的特定缓存数据的业务对象中创建处理程序,来实现回调。例如,您可能有一个 ReportManager 对象,该对象具有两种方法,即 GetReport 和CacheReport。GetReport 报告方法检查缓存以查看报告是否已缓存;如果没有,该方法将重新生成报告并将其缓存。CacheReport 方法具有与 CacheItemRemovedCallback 委托相同的函数签名;从缓存中移除报告时,ASP.NET 会调用 CacheReport 方法,然后将报告重新添加到缓存中。当从缓存中移除项时通知应用程序创建一个类,负责从缓存中检索项并处理回调方法,以将项添加回缓存中。在该类中,创建用于将项添加到缓存中的方法。在该类中,创建用于从缓存中获取项的方法。创建用于处理缓存项移除回调的方法。该方法必须具备与 CacheItemRemovedCallback 委托相同的函数签名。从缓存中删除项时,会在该方法中执行要运行的逻辑,如重新生成项并将其添加回缓存中。测试缓存项回调创建一个 ASP.NET 网页,该网页将调用类中用于将项添加到缓存中的方法。 下面的代码示例演示如何调用 ReportManager 类的GetReport 方法(在此过程后面的示例中定义)。然后将在使用页面的 Page_Load 方法期间显示 Label 控件Label1 中的报告。protected void Page_Load(object sender, EventArgs e){this.Label1.Text = ReportManager.GetReport();} 2.在浏览器中请求 ASP.NET 页并查看报告。 报告是在首次请求页时创建的,在缓存中的报告被移除之前,后续请求都将访问缓存中的报告。 示例下面的代码示例演示一个名为 ReportManager 的、用于在从缓存中删除项时处理通知的完整类。该类管理字符串形式的e799bee5baa6e79fa5e98193e58685e5aeb931333332636431报告,此报告表示一个长期运行的进程。尽管该示例使用声明为 static(在 Visual Basic 中为 Shared)的类,但并不是必须使用静态类。不过,删除缓存项时,用于处理回调的方法必须存在。例如,不应在 ASP.NET 页中实现回调处理程序,因为在从缓存中删除项之前该页可能已被释放,因此用于处理回调的方法将不可用。为了确保从缓存中删除项时处理回调的方法仍然存在,请使用该方法的静态类。但是,静态类的缺点是需要保证所有静态方法都是线程安全的。警告请不要在页面中将 CacheItemRemovedCallback 设置为一个方法。除了在释放页面后回调无法使用页面方法以外,将回调指向页面方法还会阻碍垃圾回收将页面使用的内存回收。由于回调包含对页面的引用,而垃圾回收器不会从内存中移除包含任何引用的项,因此会出现这种情况。在加载应用程序期间,这可能会导致内存很快被用光。该示例类包括以下功能:私有成员,用于跟踪报告是否已从缓存中移除。名为CacheReport 的方法,用于将项以 MyReport 的名称添加到缓存中,并将该项设置为在添加到缓存中后一分钟过期。该方法还会将 ReportRemovedCallback 方法传递给 onRemoveCallback 参数,从而注册 ReportRemoveCallback 方法,以便在从缓存中删除项时进行调用。名为GetReport 的方法,用于从缓存中获取项。该方法确定名为 MyReport 的项是否存在于缓存中。如果该项不存在,则该方法将调用 CacheReport,,将该项添加到缓存中。名为ReportRemovedCallback 的方法,用于处理缓存项移除回调。ReportRemovedCallback 具有与 CacheItemRemovedCallback 委托相同的函数签名。该方法将变量 _reportRemovedFromCache 设置为 true,然后通过 CacheReport 方法将项添加回缓存中。 using System;using System.Web;using System.Web.Caching;public static class ReportManager{private static bool _reportRemovedFromCache = false;static ReportManager(){ } public static String GetReport(){lock (typeof(ReportManager)){if (HttpContext.Current.Cache["MyReport"] != null)return (string)HttpRuntime.Cache["MyReport"];else{CacheReport();return (string)HttpRuntime.Cache["MyReport"];}}} public static void CacheReport(){lock (typeof(ReportManager)){HttpContext.Current.Cache.Add("MyReport",CreateReport(), null, DateTime.MaxValue,new TimeSpan(0, 1, 0),System.Web.Caching.CacheItemPriority.Default,ReportRemovedCallback);}} private static string CreateReport(){System.Text.StringBuilder myReport =new System.Text.StringBuilder();myReport.Append("Sales Report");myReport.Append("2005 Q2 Figures");myReport.Append("Sales NE Region - $2 million");myReport.Append("Sales NW Region - $4.5 million");myReport.Append("Report Generated: " + DateTime.Now.ToString()+ "");内容来自www.zgxue.com请勿采集。


  • 本文相关:
  • 微信小程序缓存过期时间的使用详情
  • 深入了解hybrid app技术的相关知识
  • javascript封装 cookie 应用接口
  • javascript中this的用法实例分析
  • javascript实现日期按月份加减
  • 纯js实现表单验证实例
  • 30分钟快速入门掌握es6/es2015的核心内容(下)
  • 深入理解javascript系列(4) 立即调用的函数表达式
  • 详解require.js配置路径的用法和css的引入
  • 关于在ie下的一个安全bug --可用于跟踪用户的系统鼠标位置
  • js简单封装的图片无缝滚动效果示例【测试可用】
  • 如何:从缓存中移除项时通知应用程序
  • 微信文件已过期或已被清理怎么设置
  • 曾经用的微信小程序突然打不开了,怎么办?
  • 微信小程序如何清理缓存
  • OPPO手机提示存储空间不足,除了在文件管理中清理文件,除了恢复出厂设置,还有什么清理方法。有一次
  • 怎么给微信小程序授权位置信息
  • 微信小程序和公众号的区别
  • OPPO手机的设置---应用程序--全部---找到相机/相册--清除数据/缓存,该操作会清除手机里的相片吗?
  • 怎样设置缓存
  • 微信小程序定位权限开启或关闭怎么控制
  • 网站首页网页制作脚本下载服务器操作系统网站运营平面设计媒体动画电脑基础硬件教程网络安全基础知识javascript类库表单特效广告代码网页特效黑客性质javascript技巧domnode.jsjs其它首页javascriptjavascript技巧微信小程序缓存过期时间的使用详情深入了解hybrid app技术的相关知识javascript封装 cookie 应用接口javascript中this的用法实例分析javascript实现日期按月份加减纯js实现表单验证实例30分钟快速入门掌握es6/es2015的核心内容(下)深入理解javascript系列(4) 立即调用的函数表达式详解require.js配置路径的用法和css的引入关于在ie下的一个安全bug --可用于跟踪用户的系统鼠标位置js简单封装的图片无缝滚动效果示例【测试可用】js刷新页面方法大全js中settimeout()的用法详解js截取字符串常用方法详细整理js页面跳转常用的几种方式js打开新窗口的2种方式js数组与字符串的相互转换方法js设置cookie、读取cookie、删除js 将json字符串转换为json对象的javascript深入理解js闭包js删除数组里的某个元素方法js+css实现仿新浪微博搜索框的方法如何在js代码中消灭for循环实例详解javascript 中date对象的格式化代码方法汇js 加入收藏夹的代码(主流浏览器通用)js中对数组元素进行增删改移的方法总结js获取页面及个元素高度、宽度的代码js数组方法slice()用法实例分析yii form 表单提交之前js在提交按钮的验证js实现返回上一页并刷新页面的方法分析js操作html自定义属性的方法
    免责声明 - 关于我们 - 联系我们 - 广告联系 - 友情链接 - 帮助中心 - 频道导航
    Copyright © 2017 www.zgxue.com All Rights Reserved