Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Проверка ajax наличие файла (https://javascript.ru/forum/misc/71075-proverka-ajax-nalichie-fajjla.html)

Sonya 24.10.2017 15:53

Проверка ajax наличие файла
 
Здравствуйте! Подскажите, пожалуйста. Для примера, вот так я хочу, чтобы пользователи через аякс узнавали о наличии файла на сервере (alert для примера):
$.ajax("http://site.ru", {
    success: function() {
        alert("Файл существует");
    };
    error: function() {
        alert("Файл не существует");
    };
});

Вызов должен происходить каждые 5 секунд, не будет ли это нагружать сервер, если количество посетителей больше 5 тыс.

Sonya 24.10.2017 16:01

Да, и о коде, может лучше сделать так?
$.ajax("http://site.ru", {
    success: function() {
        alert("Файл существует");
    },
    error: function() {
        alert("Файл не существует");
    },
   method: "HEAD"
});

laimas 24.10.2017 18:02

Криво синтаксически метод написан. И в чем же заключается проверка существования файла?

Sonya 24.10.2017 19:45

Цитата:

Сообщение от laimas (Сообщение 468116)
Криво синтаксически метод написан.

А как не криво будет?
Цитата:

Сообщение от laimas (Сообщение 468116)
И в чем же заключается проверка существования файла?

В ответе сервера. Есть успешно значит выведет "success", если нет, то ошибка "error".

laimas 24.10.2017 20:12

Цитата:

Сообщение от Sonya
А как не криво будет?

http://api.jquery.com/jquery.ajax/

Цитата:

Сообщение от Sonya
В ответе сервера.

А обращение к индексному файлу домена "http://site.ru" как-то определяет наличие неких файлов на нем?

Sonya 24.10.2017 20:40

Цитата:

Сообщение от laimas (Сообщение 468124)
А обращение к индексному файлу домена "http://site.ru" как-то определяет наличие неких файлов на нем?

Пусть будет "http://site.ru/api", у меня вопрос, будут ли запросы перегружать сервер, и какой из двух приведенных кодов, оптимальнее.

laimas 24.10.2017 21:02

Вряд ли одновременно ваш сайт будет запрашивать все 5000 ваших пользователей. А что касается оптимальности, то разницы между двумя приведенными нет никакой, если вам просто отправить запрос. HEAD метод тоже самое, что и GET, но не будет тела ответа, а заголовки вы не анализируете. Поэтому, вы проверьте свой код в реалии и посмотрите что при этом получите. Это и будет ответом решает ли это вашу задачу. Довольно таки странная проверка.

Sonya 24.10.2017 21:10

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

laimas 24.10.2017 21:19

Цитата:

Сообщение от Sonya
Скрипт проверенный, работает

Уверены, что отвечает задаче? Вы не учитываете того, что ошибка запроса генерируемая Ajax еще не означает, что файла нет. Однозначно на это может дать только статус ответа - 404, остальное только ваши предположения.

Чтобы завалить ваш сервер нужно одновременно подать на него массу запросов, которые он не cможет обработать, с вашими пользователями через каждые 5 секунд, этого слишком мало.

Не знаю чего вы делаете, но может быть как то иначе это решать.

Sonya 24.10.2017 21:32

Цитата:

Сообщение от laimas (Сообщение 468130)
Однозначно на это может дать только статус ответа - 404, остальное только ваши предположения.

Вы абсолютно правы, именно поэтому при отсутствие файла, у меня выдается ошибка 404. Спасибо Вам за ответ.

Alexandroppolus 25.10.2017 07:58

Sonya,
Если в url для аяксового запроса ты подставляешь непосредственно адрес того самого файла, и нужно только следить за его наличием, то лучше HEAD. И потом смотреть статус ответа. По идее, сервер должен только проверить его наличие, но некогда не зачитывать сам файл и не отправлять его.

С другой стороны, если клиентам таки надо забрать содержимое файла, как только он появится, то правильнее GET запрос - тут будет быстрая проверка отсутствия файла, и однократная отдача его каждому клиенту.

Если же url не указывает на этот файл, а является адресом какого-то серверного скрипта, то опять же GET, в ответе будет сказано, есть файл или нет. Тут можно подумать о том, как держать в оперативной памяти факт наличия файла, чтобы каждый раз не трогать диск.

Sonya 27.10.2017 23:26

Спасибо!


Часовой пояс GMT +3, время: 09:22.