在 Play 框架中使用缓存

2024-04-17

我正在尝试实现一个测验应用程序。该应用程序使用 ajax 将问题一一加载。当用户单击“到下一个问题”按钮时,他/她的答案将保存在缓存中。但是当我调试时,缓存列表始终为空......

此代码创建第一个缓存数组:

public static void viewQuiz(@Required String user, @Required String test) {        
        if(validation.hasErrors()) {
            flash.error("Hoop kullanıcı lazım…");
            index();
        } else{
            TestClass selectedTest = TestClass.find("title", test).first();
            List<String> choiceList = new ArrayList<String>();
            session.put("testID", selectedTest.id);
            Cache.set("choices", choiceList, "30mn");
            render();
        }
    }

这段代码试图一一保存答案:

public static void question(@Required Long id, String answer){
    Long testId = Long.parseLong(session.get("testID"));
    TestClass test = TestClass.findById(testId);
    List<Question> questList = Question.find("test_id", test.id.intValue()).fetch(); 
    Question quest = questList.get(id.intValue());
    if(answer != null){
        List<String> choiceList= Cache.get("choices",List.class);
        choiceList.add(id.intValue(), answer);
        Cache.set("choices", choiceList, "30mn");
    }   
    int count = questList.size()-1; 
    render(quest, count, id);
}

这段代码是第二个的 html 视图:

 #{extends 'main.html' /}

#{set title:'question.html' /}

<script type="text/javascript"> 
        var questionId = ${id};
        $('#nextButton').click(function(){
        $('#questionDiv').html('<p><img id = "loaderGif" src="public/images/loading.gif"/></p>');

        $('#questionDiv').load("/test/" + ++questionId);

    });
    $('#endButton').click(function(){
        $('#questionDiv').html('<p><img id = "loaderGif" src="public/images/loading.gif"/></p>');
        $('#questionDiv').load("/result");
    });
 </script> 

<legend>Soru ${id+1}</legend>
<p>&{quest.question}</p>

#{list items:quest.choices, as:'choice'} 
<p><input type="radio" name = "answer" id = "answer" size="30" value="${choice}"/>&{choice}</p>
#{/list}
#{if id < count}
<input id = "nextButton" name="nextButton" type="button" value="İleri"/>
#{/if}
#{else}
<input id = "endButton" name="endButton" type="button" value="Bitti"/>
#{/else}

不要使用缓存来“存储”对象。将其存储在会话中或创建一个新模型来存储答案。通常,您不能期望缓存保留您放入的对象;它是一个缓存,而不是一个商店。

引用剧中的话!网站:http://www.playframework.org/documentation/1.2.2/cache http://www.playframework.org/documentation/1.2.2/cache

重要的是要理解缓存契约是明确的:什么时候 您将数据放入缓存中,您不能指望该数据保留在那里 永远。事实上你不应该。缓存速度很快,但值会过期, 并且缓存一般只存在于内存中(没有持久化 备份)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 Play 框架中使用缓存 的相关文章

  • Rails:计划任务来预热缓存?

    我使用以下内容通过 memcached 缓存加载缓慢的页面 caches action complex report expires in gt 1 day 控制器操作受 Devise 身份验证保护 当前 该页面在用户第一次请求时被缓存 当
  • 缓存行对齐(需要文章澄清)

    我最近在我的应用程序中遇到了我认为是错误共享的问题 我查了一下关于如何将我的数据与缓存行对齐 他建议使用以下 C 代码 C using C 0x alignment syntax template
  • 清除另一个应用程序的 Symfony 缓存

    我想通过后端应用程序中的操作清除前端应用程序的缓存 我怎样才能实现这个目标 我相信在 symfony 1 2 中执行此操作的正确方法如下 sfContext switchTo frontend switch to the environme
  • 玩 Scala Akka WebSockets 更改 actor 路径

    我遵循使用 Scala Play 和 Akka Actor 创建 Web 套接字的示例 https www playframework com documentation 2 5 x ScalaWebSockets Handling Web
  • 在.Net中使用ObjectCache缓存对象并设置过期时间

    我陷入了一个场景 我的代码如下 更新 它不是关于如何使用数据缓存 我已经在使用它及其工作 它是关于扩展它 以便该方法在到期时间和从外部源获取新数据之间不会进行调用 object string this GetDataFromCache ca
  • HTML5 应用程序缓存与浏览器缓存

    当前浏览器中实现了 applicationCache 我的应用程序缓存清单文件更改版本号 然后触发 applicationCache 更新事件 强制浏览器从服务器下载清单文件中提到的新资源 假设我已经在这些资源上配置了远期到期标头 这些文件
  • 使用 Webpack 进行缓存,索引源代码中的 [hash] 值,使用 React.js

    我正在构建一个同构应用程序 它完全是用react构建的 也就是说 html基础也在react中 我有我的根 html 作为应用程序组件 它看起来像这样 var AppTemplate React createClass displayNam
  • 在 Java 中加载和缓存图像的最佳方法是什么?

    我有超过一千个 16 x 16 像素图块图像的大量集合 我在 Java 中制作的游戏需要这些图像 在不耗尽 JVM 可用内存的情况下存储切片的最佳方法是什么 我认为生成 1000 BufferedImages 可能并不明智 保持图像准备就绪
  • Rails 4.0 expire_fragment/缓存过期不起作用

    我一直在尝试使用 Rails 的缓存功能 但我无法使某些缓存片段过期 尽管它们似乎已过期 使用 Rails 教程网站中指出的 Russian Doll Caching 我正在使用此配置 我使release controller rb 控制器
  • Spring Boot,使用 EhCache 进行缓存

    我需要在我的应用程序中缓存一些数据 我正在考虑使用 Ehcache 我有几个问题 Ehcache需要另外一台服务器吗 我需要其他客户端来使用 Ehcache 吗 Ehcache 如何与多个实例配合使用 是否有可能使用 Ehcache 创建类
  • 如何在高速缓存中存储图像

    我对此完全空白 我想从 URL 下载图像 并且必须将其存储在内部 以便下次我不需要连接到网络 而是从缓存中检索它 但我不知道该怎么做 谁能帮我提供一个代码片段 import java io BufferedInputStream impor
  • 使用Intel的PIN工具来计算程序中缓存命中/未命中的次数

    我一直在尝试编写一个 pintool 来检测给定程序中的缓存命中和未命中情况 我发现有INS IsMemoryRead Write等调用来判断指令是否是LD ST 有没有办法确定指令是否命中或未命中缓存 如果是这样 是否还可以获得从缓存 内
  • F# 正确使用序列缓存

    我正在尝试将 Seq cache 与我制作的函数一起使用 该函数返回最多为 N 的素数序列 不包括数字 1 我无法弄清楚如何将缓存的序列保留在范围内 但仍然使用它在我的定义中 let rec primesNot1 n 2 n gt Seq
  • 在 any() 语句中迭代一个小列表是否更快?

    在低长度迭代的限制下考虑以下操作 d 3 slice None None None slice None None None In 215 timeit any type i slice for i in d 1000000 loops b
  • 为什么 data.table `:=` 的 knit 缓存失败?

    这在精神上与this https stackoverflow com q 15267018 1900520问题 但机制上一定不同 如果您尝试缓存knitr包含一个块data table 分配然后它的行为就好像该块尚未运行 并且后面的块看不到
  • 如何在 Laravel 5 中通过键获取所有缓存项的列表?

    Laravel 中的 Cache 类具有 get itemKey 等方法来从缓存中检索项目 以及 Remember itemKey myData1 myData2 来将项目保存在缓存中 还有一个方法可以检查缓存中是否存在某个项目 Cache
  • 如何使 Redis 缓存中数据层次结构(树)的部分内容无效

    我有一些产品数据 需要在 Redis 缓存中存储多个版本 数据由 JSON 序列化对象组成 获取普通 基本 数据的过程很昂贵 将其定制为不同版本的过程也很昂贵 因此我想缓存所有版本以尽可能进行优化 数据结构看起来像这样 BaseProduc
  • 用于请求带有临时缓存的远程 Observable 的 RxJava 模式

    用例是这样的 我想暂时缓存最新发出的昂贵的Observable响应 但在它过期后 返回到昂贵的源Observable并再次缓存它 等等 一个非常基本的网络缓存场景 但我真的很难让它工作 private Observable
  • ASP.NET 中 HTTP 缓存相关标头的有效含义

    我正在 ASP NET 2 0 中开发一个 Web 应用程序 其中涉及通过资源处理程序 ashx 提供图像 我刚刚实现了处理缓存标头和条件 GET 请求 这样我就不必为每个请求提供所有图像 但我不确定我是否完全理解浏览器缓存发生了什么 图像
  • 如何使用play框架上传多个文件?

    我在用play framework 2 1 2 使用java我正在创建视图来上传多个文件 我的代码在这里 form action routes upload up enctype gt multipart form data

随机推荐