将缓存页检查集成到索引文件中

时间:2012-05-31 15:15:20

标签: php javascript

我试图将主页面设置为使用查询字符串重新加载,因此它不会来自缓存文件。该页面是index.php,但我想,无论何时页面加载,都会附加一个唯一的字符串(如Rocket对a previous question of mine建议的评论中的答案)。

我想将它集成到验证登录的php中。

这样的事情是个好主意

<?php

require_once('login-config.php');

//use javascript cookie to detect if the page is coming from hash
//and if so, redirect to a new url with a ?<?=time()?> query sting

if ( !isset$($_COOKIE['login_cookie'] ) 
{

//render login-form page

} 
else 
{

//redirect to the content page

}

来自this page的javascript缓存/ Cookie检查(如下)

var uniqueKey = '<%= SomeUniqueValueGenerator() %>';
var currentCookie = getCookie(uniqueKey);
var isCached = currentCookie !== null;
setCookie(uniqueKey); //cookies should be set to expire 
                      //in some reasonable timeframe

我想我应该做这样的事情,

//best guess is that I update this uniqueKey every time I update the page
//and want it not to load from cache
var uniqueKey = 'v1.1';
var currentCookie = getCookie(uniqueKey);
var isCached = currentCookie !== null;

if (!isCashed){      
    setCookie(uniqueKey);  
    window.location'?".time().";'
} else {
    window.location'?".time().";'
}

但我有点不确定如何将它们整合在一起。

由于

2 个答案:

答案 0 :(得分:1)

这不一定会阻止浏览器缓存页面,最好不要发送缓存标头......

header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past

答案 1 :(得分:0)

我相信这个PHP代码会做你想要的:

if ( !isset$($_COOKIE['login_cookie'] ) 
{
    //render login-form page
}
else 
{
    //redirect to the content page
    header("Location: index.php?t=" . time());
    exit();
}