2009-05-20 4 views
8

Ссылаясь на this question, как я могу получить текущий размер страницы в kb, этот размер я буду использовать, чтобы узнать скорость соединения для этой страницы.Как получить текущий размер страницы в КБ, используя только javascript?

+0

Что останавливает вас от использования файла исправления размера?Чтобы ограничить кеширование, просто передайте случайный параметр GET: '' file.dat? Nc = '+ Math.random() ' – Christian

ответ

6

Если ваша страница не имеет размера в мегабайтах, результат будет бессмысленным.

Это связано с тем, что время, необходимое для подключения, отправки запроса и ожидания отправки ответа сервером, равно quite large по сравнению с временем, требуемым для загрузки страницы, и в дополнение к этому TCP/IP имеет slow start.

Вы также должны учитывать тайники, прокси и количество параллельных подключений, которые сделает браузер (например, может приоритизировать загрузку скриптов и стилей, что замедляет загрузку страницы).

+1

Объедините этот ответ с ответом Диодеуса, и там вы идете! –

5

Я думаю, что захват известного файла данных через Ajax будет лучшим решением, чем измерение текущей страницы. Проще времени запуска и завершения вызова Ajax.

+0

Я собираюсь сделать это как виджет, где другие пользователи могут размещать на своем сайте, и хотят вычислить скорость их браузеров не на сервере –

+1

Я сделал именно то, что вы пытаетесь сделать, и вам нужно использовать файл известного размера - обычно изображение. – annakata

+0

ah, ok, поэтому виджет будет содержать, например, изображение фиксированного размера и будет вычисляться по сравнению с ним. –

5

, если вы имеете в виду только HTML, то вы можете использовать JQuery, чтобы сделать получить количество символов (байтов в большинстве случаев, в зависимости от кодировки)

$(document).ready(
    function() 
    { 
     var pagebytes = $('html').html().length; 
     var kbytes = pagebytes/1024; 
    } 
); 

это в основном подсчитывает количество символов, содержащихся в (в том числе) тег. что исключает любой указанный Doctype, но так как это всегда статично, вы можете добавить длину doctype в pagebytes.

// Редактировать

выглядит DOCTYPE в конце концов, не может быть статичным. , но без него он все равно должен быть достаточно точным.

+1

Это выглядит неудачно на '' – Bergi

+0

И он не будет принимать во внимание gzipping на сервере. –

+0

К сожалению, этот метод является ASCII-only. Если вы используете unicode, между длинами и байтами нет четкого совпадения. – andre487

4

Существует нестандартное свойство, доступное только для IE - document.fileSize MDNMSDN. Он возвращает размер html-страницы в байтах.

Или вы можете получить content-length заголовок

var request = new XMLHttpRequest(); 
request.open('GET', document.location, false); 
request.send(); 
var size = request.getAllResponseHeaders().toLowerCase().match(/content-length: \d+/); 
document.getElementById("size").innerHTML = size + " bytes"; 
  1. Example with text only;
  2. Example geting the size of image;
  3. Example with content-length
1

Чтобы получить размер файла страниц в Интернете, я построил яваскрипт букмарклета, чтобы сделать трюк. Он предупреждает о размере страницы, на которой вы находитесь, в kb. Не уверен, что он может помочь со скоростью соединения.

Измените оповещение на приглашение, если вы хотите скопировать размер файла.

Вот код букмарклета для предупреждения.

<a href="javascript:a=document.getElementsByTagName('HTML')[0].outerHTML;b=a.length/1024;c=Math.round(b);alert(c+' kb');">Doc Size</a> 

Ниже приведен код букмарклета.

<a href="javascript:a=document.getElementsByTagName('HTML')[0].outerHTML;b=a.length/1024;c=Math.round(b);prompt('Page Size',c+' kb');">Doc Size</a> 

в действии на http://bookmarklets.to.g0.to/filesize.php

+0

спасибо. Это помогло ответить на мой вопрос по адресу http://stackoverflow.com/questions/33351977/how-to-get-length-size-of-a-webpage-using-javascript/33352202#33352202 – anjanb

Смежные вопросы