Существует ли способ узнать, сколько памяти используется веб-страницей, или моим приложением jQuery?
Вот моя ситуация:
Я создаю данные тяжелое веб-приложение с помощью jQuery frontend и успокоительного бэкенда, который служит данным в JSON. Страница загружается однажды, и затем все происходит через ajax.
UI предоставляет пользователям способ создать несколько вкладок в UI, и каждая вкладка может содержать партии и много данных. Я рассматриваю ограничение количества вкладок, которые они могут создать, но думали, что будет хорошо только ограничить их, после того как использование памяти вышло за предел определенного порога.
На основе ответов я хотел бы сделать некоторый clarfications:
Я не знаю, каким образом можно было бы узнать, сколько памяти используется браузером, но вы могли бы использовать эвристику, основанную на количестве элементов на странице. Используя jQuery, вы можете сделать $ ('*'). Length
, и он даст вам количество элементов DOM. Честно говоря, вероятно, проще просто провести тестирование юзабилити и предложить фиксированное количество вкладок для поддержки.
Если вы хотите просто посмотреть на тестирование, в Chrome есть способ через страницу разработчика отслеживать использование памяти, но не знаете, как это сделать в javascript напрямую.
Возможно, вы захотите, чтобы сервер отслеживал их пропускную способность для этого сеанса (сколько байтов данных им было отправлено). Когда они превышают лимит, вместо отправки данных через ajax сервер должен отправить код ошибки, который javascript будет использовать, чтобы сообщить пользователю, что он использовал слишком много данных.
Вы можете получить document.documentElement.innerHTML и проверить его длину. Это даст вам количество байтов, используемых вашей веб-страницей.
Это может работать не во всех браузерах. Таким образом, вы можете заключить все элементы тела в гигантский div и вызвать innerhtml для этого div. Что-то вроде
Используйте инструмент Chrome Heap Snapshot
Также есть инструмент Firebug под названием MemoryBug , но, похоже, он еще не очень развит.