Php 使用ajax请求的数据总是相同的

Php 使用ajax请求的数据总是相同的,php,ajax,caching,jquery,Php,Ajax,Caching,Jquery,我的服务器上一定有某种服务器端缓存 每次使用jqueryajax请求内容时,我都会得到相同的数据,即使我将服务器端代码替换为 echo('hello, world!'); 使用的配置: SuSE Linux Apache服务器 PHP 5 哪种缓存可以处于活动状态? 如您所见,我在下面的javascript中实现了两个代码来防止浏览器缓存。问题肯定出在服务器端 仅供参考: 客户端代码: // Add a timestamp to url to prevent browser from ca

我的服务器上一定有某种服务器端缓存

每次使用jqueryajax请求内容时,我都会得到相同的数据,即使我将服务器端代码替换为

echo('hello, world!');
使用的配置:

  • SuSE Linux
  • Apache服务器
  • PHP 5
哪种缓存可以处于活动状态?

如您所见,我在下面的javascript中实现了两个代码来防止浏览器缓存。问题肯定出在服务器端

仅供参考:

客户端代码:

// Add a timestamp to url to prevent browser from caching ajax content
var date = new Date();
var timestamp = date.getTime();
var nocache = '&nocache=' + timestamp;

// Ajax call: get entries, add to entries div
$.ajax({
    type: "POST",
    url: "jsfeed.php",
    //data: "lastmsg="+ ID,
    data: "<?php echo("key=$api_key&fc=$collection_ident&offset="); ?>" + (ID+1) + "<?php echo("&showmax=$showmax&nocontainer" . $jstaggedonly); ?>" + nocache,
    cache: false,
    success: function(html) {
        $("div#updates").append(html);
        $("#more"+ID).remove();
    }
});
if( isSet($_POST['offset']) && isSet($_POST['showmax']) )
{
  $offset  = $_POST['offset'];
  $showmax = $_POST['showmax'];
  $new_offset = $offset + $showmax;

  $call = $api_url . 'jsfeed.php?' . $_SERVER['QUERY_STRING'];

  $html = file_get_contents($call);
  echo($html);
  // ...
}
编辑:

如果你想-我正在测试的页面(在线时间有限)。。。在更新列表下方搜索“显示更多”按钮。这就是触发ajax调用的地方

编辑:

我解决了这个问题。我的脚本中有一个错误。不需要像上面那样手动附加时间戳。jQuery选项
缓存:false
就足够了。所以,它看起来就像这样:

// Ajax call: get entries, add to entries div
$.ajax({
    type: "POST",
    url: "jsfeed.php",
    data: "<?php echo("key=$api_key&fc=$collection_ident&offset="); ?>" + (ID+1) + "<?php echo("&showmax=$showmax&nocontainer" . $jstaggedonly); ?>",
    cache: false,
    success: function(html) {
        $("div#updates").append(html);
        $("#more"+ID).remove();
    }
});
//Ajax调用:获取条目,添加到条目div
$.ajax({
类型:“POST”,
url:“jsfeed.php”,
数据:“+(ID+1)+”,
cache:false,
成功:函数(html){
$(“div#updates”).append(html);
$(“#更多”+ID).remove();
}
});

如果服务器没有明确告知不要缓存AJAX请求,某些浏览器会非常积极地缓存AJAX请求

尝试以下内容(摘自php手册,php.net/headers):


您应该将时间戳添加到url,而不是发送的数据

var nocache = '?nocache=' + timestamp;


一个非常简单的测试就是用
“jsfeed.php?”+Math.random()替换
“jsfeed.php”
。。。这肯定会禁用任何缓存。如果仍然发生这种情况,请确保您确实从您认为是从中请求的文件中请求。刚刚测试了这个,但我仍然得到相同的记录。我刚刚在上面添加了一个链接,你可以在那里看到它。寻找“显示更多”按钮。我只是想找echo(“你好!”);不幸的是没有运气。我现在检查了一下,没有看到“你好!”,你把它改回来了吗?尽管如此,如果涉及到缓存,请按CTRL-F5键,它真的不应该再这样了。无论如何,我们很难调试,因为我们无法添加新项目(因此检查是否相同)。。。你好应该出现,但会显示过账条目。服务器php中唯一有效的代码是:echo('Hello!');退出();然后我们看的不是同一个页面,我看了你的代码,得到了jsfeed.php的链接,并将其放在浏览器中,事实上,它与AJAX显示的内容是一样的。不过这是一个POST请求,它们绝对不能被缓存。显然,它正在被缓存:)。我见过IE8和IE9缓存了所有不应该缓存的东西。(不知道他是否在使用IE。)@Corbin:使用Safari和Chrome测试了我的脚本。这就是
$中的
缓存:false
属性的用途。ajax
自动附加时间戳。
var nocache = '?nocache=' + timestamp;
$.ajax({
    type: "POST",
    url: "jsfeed.php" + nocache,