Как остановить тайм-аут Ajax-вызов с использованием JQuery - PullRequest
0 голосов
/ 29 августа 2011

У меня есть приложение ajax, в котором есть код примерно такой:

$.ajax({
type: "GET",
url: "data.txt",
beforeSend:function(){
},
success:function(response){
 just update responsed data;
}
});

этот вызов выполняется каждую секунду, и он просто обновляет последние данные из файла «data.txt», который обновляется на сервере с помощью задания cron. Теперь, поскольку единственная функция - обновлять последние данные каждую секунду, так что меня больше интересует последний вызов ajax; так как я могу завершить старый вызов ajax, который перешел 4 секунды, но еще не завершен, чтобы я мог уменьшить трафик сервера. И любое предложение, если использовать «data.html» или «data.php» вместо «data.txt», повысит производительность приложения? И какой веб-сервер может работать лучше, чем Apache для приложений, управляемых ajax? Мне срочно нужна эта помощь; Пожалуйста, помогите.

Ответы [ 3 ]

0 голосов
/ 29 августа 2011

Вы можете отслеживать время последнего успешного обновления.

function NowMS() {return parseInt(new Date().getTime())}

dataLastUpdateT = -Infinity;

$.ajax({
    type: "GET",
    url: "data.txt",
    success: function(response){
        if (NowMS() > dataLastUpdateT) {
            use(response);
            dataLastUpdateT = NowMS();
        }
    }
}
0 голосов
/ 29 августа 2011

Вы можете попробовать это:

function getData(){
    $.ajax({
        type: "GET",
        url: "data.txt",
        timeout:4000,
        beforeSend:function(){

        },
        success:function(response){

        },
        error:function(){

        },
        complete:function() {
            setTimeout(function(){getData();},1000);
        }
    });
}
getData();

таким образом время ожидания ajax-запроса истекает через 4 секунды и повторяется каждую секунду (независимо от успеха или тайм-аута)

Также взгляните на nginx . Например, он быстрый и использует меньше памяти, чем apache, для обработки клиентских подключений

0 голосов
/ 29 августа 2011

Я не знаю, как у вас настроено в данный момент, но, возможно, было бы лучше выполнить ваш следующий вызов AJAX после того, как последний завершил (или возвратил ошибку).Так что это будет что-то вроде:

(function updateData() {
    $.ajax({
        type: 'GET',
        url: 'data.txt',
        beforeSend: function() {
            // Do stuff
        },
        success: function(response) {
            // Handle response
            updateData();
        }
    });
})();

Я не знаю, есть ли какие-либо изменения производительности при изменении типа файла.

Редактировать: Если вынужно просто убить запрос, вы можете сделать это, используя методику, описанную здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...