Студенты, которые часто используют поиск в Baidu, не будут игнорировать раскрывающий индекс блока ввода. Это так удобно. Тем не менее, уникальные условия заставляют эту асинхронную технологию столкнуться с некоторыми тестами. Запрос с высокой одновременностью сервера призывает их осаду переднего конца призывает их уменьшить количество раз, когда они отправляют Ajax как можно больше. Это не похоже на то, что это связано с этой статьей, но это не так. Прежде всего, давайте сделаем бесплатную рекламу для Baidu. Введите слово «Фронт-энд» на домашней странице Baidu и используйте Chromebug, чтобы легко увидеть отправленный ответ. Результаты следующие:
Кода -копия выглядит следующим образом:
window.bdsug.sug ({Q: 'Front End';, P: false, s: ['Front End Development', 'Front End Engineer', 'Front End Bus', «Инженер фронтального инженера», «Front End Framework», «Частота передней шины», «Вопросы интервью переднего интервью», «Анализ переднего конечного анализа», «Инструменты развития переднего конца», «Наблюдение переднего конца»]});
Baidu пытается отобразить данные о выпадении, возвращая метод SUG с параметром OBJ. Когда вы снова входите в «Фронт-энд», не обновляя страницу, аналогичные запросы не возникали. Это означает, что они, вероятно, установили объект кэша, который используется для временного хранения запрошенного объекта. Когда одно и то же слово будет введено позже, ключ объекта кэша будет извлечен сначала. После успеха матча значение объекта читается напрямую и больше не отправляет запрос на сервер, что может эффективно сэкономить затраты.
Давайте бросим кирпич и возьмем Джейд, давайте поговорим о настоящем главном герои: метод HasownProperty.
Я считаю, что JSers не незнакомы с HasownProperty, и я просто продаю воду у реки здесь.
Он является исключительным для объекта, используется для определения того, существует ли свойство в ключе объекта, и возвратное значение является логическим значением. Вот пример:
Кода -копия выглядит следующим образом:
var test0 = array.prototype.hashownproperty ('split'); // Неверно, потому что метод разделения не существует в массиве
var test1 = string.prototype.hashownproperty ('split'); // true, потому что сплит-это встроенный метод для строковых объектов
Когда вы знаете это, кажется, что этого недостаточно, чтобы увидеть силу HasownProperty. Итак, давайте просто воспроизводим пример выпуска Baidu:
Кода -копия выглядит следующим образом:
var data = {}, saveObj = function (val) {
if (data.hasownproperty (val)) {// Если отправленное значение существует в объекте данных, запрос не будет отправлен
var len = data [val] .length;
для (var i = 0; i <len; i ++) {
console.log (data [val] [i]);
}
}еще{
var url = 'http://suggestion.baidu.com/su?wd=' + val;
$ .ajax ({// ради явных примеров, здесь мы используем jquery's ajax в качестве примера
URL: URL + '& P = 3 & CB = window.bdsug.sug & sid = 1421_1513_1541_1542_1582 & t = 1353756355137', // Последний параметр t - марка времени.
DataType: 'jsonp',
Тип: 'Get',
Успех: function (res) {
var msg = res.data, len = msg.length;
msg == null && (msg = []);
if (len> 0) {
data [val] = msg; // кэшированные результаты поиска
для (var i = 0; i <len; i ++) {
console.log (msg [i]); // распечатать результат запроса
}
}
}, ошибка: function () {
Alert ('error');
}
});
}
};
Некоторые коллеги спросили, что таким образом память, занятая данными объекта кэша, станет больше и больше, поскольку значения ключей сохраняются. Тогда я хочу сказать, что это неизбежно. Чтобы сохранить запросы на сервер, другие должны быть принесены в жертву. На самом деле, пространство, занятое объектом кэша, обычно незначительно, потому что оно не «резидентская память», и оно будет уничтожено после обновления страницы. Тем не менее, мы можем дать другое решение, чтобы согласиться с пиковым значением для этого объекта, например, оно позволяет только хранить 100 пар ключевых значений. Когда число превышает 100, первые десять сохраненных клавиш удаляются через оператор удаления или просто не хранятся, поэтому этой проблемы можно избежать.
Метод HasownProperty особенно распространен в обнаружении объектов. Конечно, заинтересованные студенты также могут узнать о собственном методе. Это улучшенная версия HasownProperty. Он может обнаружить свои собственные свойства и перечисление свойств. Эта статья не будет объяснена подробно.