Laravel 4存储临时数据


Laravel 4 store temporary data

我想临时存储一系列数组,供下一个请求使用。存储的信息包含一些敏感数据,这些数据将用于通过ajax调用在该页面上导航。数据各页不同。所以,我只需要临时存储它,以便用户在该页面上时使用。

首先,我尝试使用缓存:Cache::put($dynamickey, $multiArray, 20);,但这将导致文件夹中的大量"垃圾"缓存存储,即使它过期了。

所以,我尝试了会话刷新:Session::flash($dynamickey, $multiArray);。当用户只打开网页的一个选项卡时,这就起作用了。但若用户打开这个网站的多个标签,它就会崩溃。

例如:1.用户在选项卡1上浏览本网站。2.然后,用户在tab2上浏览此网站。一旦用户浏览了tab2上的网站,tab1的会话数据就会被删除。3.用户返回并浏览tab1内容。系统中断,无法工作。

我如何存储临时数据?一旦不再需要,这些数据就会被删除,但也能很好地与多个选项卡配合使用?

谢谢。

因此,在实际设置会话数据的页面上,您需要生成一个动态密钥,在进行ajax调用时也可以生成该密钥。因此:

Session:put($dynamicKey, $data);

由于服务器不知道你是否打开了多个选项卡,它只处理更多的请求,我们需要区分AJAX请求和标准请求。这可以通过以下方式实现:

if (Request::ajax())
{
    if (Session::has($dynamicKey)) {
        Session::forget($dynamicKey);
        // Do your application logic
    }
}

因此,在发出ajax请求之前,会话不会被删除,在ajax请求中您可以重新生成该密钥,现在,如果您不能从提供的数据中重新生成该键,那么您就无法区分两个不同的请求。因此,您需要将此密钥传递给客户端,例如将其返回到一点javascript中。

现在AJAX调用可以利用这个密钥并将其发送到请求中,您的服务器可以在请求中提取它并找到选项卡的正确会话。

希望你能理解。