必須有某種我的服務器上的服務器端緩存的...數據請求總是相同
當我使用jQuery AJAX請求內容每當我得到同樣的數據,即使我更換服務器
- 的SuSE Linux
- Apache服務器 :與
echo('hello, world!');
使用的配置端代碼3210
什麼樣的緩存可以被激活?
正如你所看到的,我已經實現了兩個代碼來防止瀏覽器在下面的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);
// ...
}
編輯:
如果你想爲have a look - 我正在測試的網頁(限時在線)...在更新列表下搜索「顯示更多」按鈕。這是觸發ajax調用的地方。
編輯:
我解決了這個。我的腳本中有一個錯誤。沒有必要手動追加時間戳,就像我上面做的那樣。 jQuery選項cache: 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();
}
});
一個非常簡單的測試就是用''jsfeed.php?'替換''jsfeed.php'''。 + Math.random()'...確實會禁用任何緩存。如果它仍在發生,請確保您實際上是從您認爲正在請求的文件請求。 – Andreas
剛剛測試過這個,但我仍然得到相同的記錄。我剛剛在上面添加了一個鏈接,您可以在其中看到它。尋找「顯示更多」按鈕。我只是試圖得到回聲('你好!');不幸的是沒有運氣 –
我現在檢查了,我沒有看到「你好!「,你是否改回來了?但是,如果涉及到緩存,請執行CTRL-F5,它確實不應該再出現了。無論如何,我們很難調試,因爲我們無法添加新項目看看它是否一樣) – Andreas