首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QBO3无法缓存错误

QBO3无法缓存错误
EN

Stack Overflow用户
提问于 2018-08-30 01:19:57
回答 1查看 18关注 0票数 0

昨天,当我尝试刷新QBO3系统中的某些页面时,我注意到了以下警告:

根本原因是什么?我如何修复它?

EN

回答 1

Stack Overflow用户

发布于 2018-08-30 01:19:57

如果浏览器的sessionStorage已满,则会出现此错误。您可以通过关闭并重新启动浏览器(完全)或发出以下javascript命令来解决此错误:

代码语言:javascript
复制
sessionStorage.clear();

会话存储允许使用javascript显式地将数据存储在用户的硬盘驱动器上。用户可以限制存储量,并可以关闭会话存储。如果保持打开状态,正确使用会话存储可以极大地增强用户体验。

会话存储内置于qbo3.AbstractObject javascript类中。每次调用invokeHtml时,结果都保存在缓存中。呈现面板时,qbo3.ObjectBind行为将尝试从会话存储中读取面板结果,并将显示结果(如果可用)。

仪表板示例

评估仪表板的用户体验是:

  • 导航到估值仪表板(Valuation.ashx/Home)
    • 有两个面板:仪表板面板和搜索面板
    • 第一次访问时,这两个面板都不在会话存储中
    • 仪表板面板将通过从服务器请求数据来呈现默认仪表板,仪表板结果将保存到会话存储
    • 搜索面板将不会呈现,因为尚未发出搜索请求
    • 单击仪表板内的链接,在搜索面板中呈现相应结果
    • 搜索面板将从服务器请求数据搜索结果将保存到会话存储中单击评估控制面板的超链接,离开评估控制面板
    • 单击链接以重新访问评估控制面板(或仅单击上一步)
    • 控制面板将从会话存储中呈现
    • 搜索面板将从会话存储中呈现,并向用户显示其上次搜索results

总结示例

Summary中,我们必须更加小心我们的缓存。如果我们正在缓存,比如说,一个附件面板,我们必须确保我们不会将估值为12345的附件与来自估值23456的附件混淆。这可以通过指定缓存键来完成:

代码语言:javascript
复制
<div id="attachmentList" class="span12" data-behavior="ObjectBind" data-objectbind-options="{{ 
  'class': 'qbo3.AttachmentObject', 
  'cacheKey': 'AttachmentList-Valuation-{//ValuationID[1]}', 
  'method': 'Search', 
  'data': {{ 'Object': 'Valuation', 'ObjectID' : '{//ValuationID[1]}' }} 
}}">.</div>

这确保了javascript不会将用于估值12345的高速缓存结果与那些形成估值23456 (或任何其他估值)的缓存结果混合。

在某些情况下,需要在有限的持续时间内缓存面板内容。对于摘要页面面板,缓存10分钟的内容通常是合理的,但不是一整天。ObjectBind行为启用maxCacheDuration设置(以分钟为单位),如下所示:

代码语言:javascript
复制
<div id="attachmentList" class="span12" data-behavior="ObjectBind" data-objectbind-options="{{ 
  'class': 'qbo3.AttachmentObject', 
  'cacheKey': 'AttachmentList-Valuation-{//ValuationID[1]}', 
  'maxCacheDuration': 10,
  'method': 'Search', 
  'data': {{ 'Object': 'Valuation', 'ObjectID' : '{//ValuationID[1]}' }} 
}}">.</div>
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52083004

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档