Php 如何缓存rand()的结果?

Php 如何缓存rand()的结果?,php,caching,Php,Caching,我想将rand()的结果缓存5分钟 <?php $sec = 300; $expires = gmdate("D, d M Y H:i:s", time() + $sec) . " GMT"; header("Expires: $expires"); header("Pragma: cache"); header("Cache-Control: max-age=$sec"); echo "Test " . rand(1, 10); 简单的方法是将其存储到cookie中,并检查cook

我想将rand()的结果缓存5分钟

<?php

$sec = 300;
$expires = gmdate("D, d M Y H:i:s", time() + $sec) . " GMT";
header("Expires: $expires");
header("Pragma: cache");
header("Cache-Control: max-age=$sec");

echo "Test " . rand(1, 10);

简单的方法是将其存储到cookie中,并检查cookie是否存在以显示存储的数字,否则生成新的

大概是这样的:

<?php
setcookie("random_number", rand(1, 10), time() + 300);

if(isset($_COOKIE['random_number'])) {
echo $_COOKIE['random_number'];
} else {
setcookie("random_number", rand(1, 10), time() + 300);    
}
我想将rand()的结果缓存5分钟。可以抛出javascript代码。但它储存在饼干里
//每5分钟后打一次有趣的电话
setInterval(函数(){
生成_和_cookie_random_fun();
}, 5000);
//这个有趣的方法是生成随机数,然后将其保存到cookie中
函数generate_and_cookie_random_fun(){
var random_number=Math.floor(Math.random()*6)+1;
setCookie('name_of_cookie',随机数,7);//这里7表示七天
}
//下面是cookie的代码
函数setCookie(名称、值、天数){
var=”;
如果(天){
变量日期=新日期();
date.setTime(date.getTime()+(天*24*60*60*1000));
expires=“;expires=“+date.toutString();
}
document.cookie=name+“=”+(值| |“”)+expires+“path=/”;
}
函数getCookie(名称){
变量nameEQ=name+“=”;
var ca=document.cookie.split(“;”);
对于(变量i=0;i
好的,这里的每个人都在建议替代方案,包括javascript、cookie等,但这并不能回答问题

问题是,如果存在304 NOT Modified响应,则使用头缓存该响应

<?php
$sec = 300;
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
{
    $if_modified=time($_SERVER['HTTP_IF_MODIFIED_SINCE']);
    if($if_modified>time()-$sec)
    {
        Header("HTTP/1.1 304 Not Modified");
        exit();
    }

}

$expires = gmdate("D, d M Y H:i:s", time() + $sec) .' '. date_default_timezone_get();
$modified= gmdate("D, d M Y H:i:s", time()) . ' '.date_default_timezone_get();
header("Expires: $expires");
header("Last-Modified: $modified");
header("Pragma: cache");
header("Cache-Control: max-age=$sec");

echo "Test " . rand(1, 10);

另一种方法是将其存储在会话中,并在5分钟后取消该会话的设置,这是不可能的吗?不幸的是,这只是一个片段,可以理解它为什么不起作用。我想通过缓存实现其他功能。但是谢谢你的回答。要像这样缓存它,我想你需要设置你的htaccess来缓存PHP文件,如果不是缓存,你应该什么时候使用这些http头?也许只是向我们解释一下你的用例,通常有更好的方法来处理类似的事情。如果不将函数的结果保存在某个地方,则无法缓存该函数的结果。正如评论中已经解释的,这与OP的要求不完全一样谢谢,但我需要通过缓存来解决它,不是吗?我在发布之前没有看到你的评论。。(:也许这会对你有所帮助:@LucaRath Heel这是你的选择,你接受的答案,但你上面提到的原因是不正确的。回答这个问题的人会想尝试解决问题中的问题,这个答案确实解决了问题,但不涉及缓存。它被标记为PHP。没有提到JavaScript。
var random_number=rand(1,10);
-什么是
rand
?这不是一个JavaScript函数。
//每5分钟调用一次这个有趣的调用
-不,每5秒调用一次。
//这个有趣的函数生成随机数并将其缓存
-不,它将其存储在cookie中。Math.random()在JavaScript中可用
<?php
$sec = 300;
if(isset($_SERVER['HTTP_IF_MODIFIED_SINCE']))
{
    $if_modified=time($_SERVER['HTTP_IF_MODIFIED_SINCE']);
    if($if_modified>time()-$sec)
    {
        Header("HTTP/1.1 304 Not Modified");
        exit();
    }

}

$expires = gmdate("D, d M Y H:i:s", time() + $sec) .' '. date_default_timezone_get();
$modified= gmdate("D, d M Y H:i:s", time()) . ' '.date_default_timezone_get();
header("Expires: $expires");
header("Last-Modified: $modified");
header("Pragma: cache");
header("Cache-Control: max-age=$sec");

echo "Test " . rand(1, 10);