多页加载同一页面时,PHP页面内容从缓存加载

时间:2014-04-06 12:39:32

标签: javascript php jquery html session

我通过阅读会话变量来显示购物车产品。

如果在 page1 中添加了产品,我正在设置会话数组变量。导航到之后 第2页我正在加载会话内容以在第2页中的购物车中显示产品。

然后,如果我在第2页中添加任何产品,然后转到第1页,则第1页不显示刷新的内容,而是从中获取内容page1缓存。

  

但是当我做F5或CTRL + F5时,它运作正常......

我希望每次访问时都会从缓存中加载页面,即使它是同一页面。

这是我的代码:

<?php 
    echo "<script>
    $(document).ready(function() {";
    echo "add1('".$session_variable."')";
    echo "});</script>";
?>
<script>
add1(item)
{
document.getElementById('ItemName').value=item;
}
<script>

编辑:我使用 onclick事件从第1页导航到Page2,如下所示..

<a onclick="window.location='page2.php'" style="text-decoration:none">Page2</a><br>
<a onclick="window.location='page1.php'" style="text-decoration:none">Page1</a><br>

我添加了以下几行,但没有用。

<META HTTP-EQUIV="Pragma" CONTENT="no-cache,must-revalidate">
<META HTTP-EQUIV="Expires" CONTENT="-1">

5 个答案:

答案 0 :(得分:2)

你如何背靠背导航一个,你有一个被点击的网址导航回来还是你使用window.history.back()?

如果您使用javascript导航回来,则可能是问题所在。当导航回到第1页时,使用一个带有缓存中断的URL,就像这样

window.location.href = "/page1.php?cb=" + Math.random();

答案 1 :(得分:1)

有一些可能性:

  1. 您正在开发单页应用程序,然后您应该更新&#34; page&#34; 1手动
  2. 您正在使用javascript命令&#34; history.go(-1);&#34;导航回第1页,如果是这种情况,我建议使用常规链接
  3. 无论如何,你没有正确设置会话
  4. 您实际上并未使用会话

答案 2 :(得分:0)

重定向/或截取f5键/使用参数调用页面,如:

$(document).ready(function() {
var dfocus  = $("input");
dfocus.keydown(function(e) {
    if (e.keyCode == 116 ) { //f5
        document.location.href="mypage.php?id="+Math.random(); // this may enforce to reload the page
    }
...

然后您将强制加载页面。 (与带缓存的img src逻辑相同)

答案 3 :(得分:0)

请尝试添加 索引页面上的代码中的<?php echo "<!--" . rand(0,9999999) . "-->"; ?>

然后请再次尝试上述步骤并告诉我结果。

并尝试添加

<?php
    if(!session_id()) {
        @session_start();   
    }
    header('Expires: Sat, 26 Jul 1997 05:00:00 GMT');
    header('Last-Modified: ' . gmdate( 'D, d M Y H:i:s') . ' GMT');
    header('Cache-Control: no-store, no-cache, must-revalidate');
    header('Cache-Control: post-check=0, pre-check=0', false);
    header('Pragma: no-cache'); 

    if(isset($_SESSION['form_submitted'])) {
        unset($_SESSION['form_submitted']);
        header('Location: ?' . uniqid());
        #header('Refresh: 0');
    }
?>

答案 4 :(得分:0)

默认情况下,window.location使用assign()来改变位置,通常这已经足够好但我认为你可以使用replace()来获得所需的结果。像这样的东西: window.location.replace(&#39; page1.php中&#39)