Каковы некоторые хорошие стратегии определения размера блока в выкачивать алгоритме?

Set-Cookie - это заголовок запрещенного ответа . Вы не можете прочитать его, используя JavaScript на стороне браузера.

Если вам нужно передать эту информацию в ваш JavaScript, вам нужно, чтобы сервер использовал какой-то другой механизм (например, другой заголовок или часть тела ответа).

9
задан David Hay 27 January 2009 в 17:13
поделиться

2 ответа

Как предложение для получения Вас движение.

Спекулятивное смотрит вперед с буфером достаточного размера для признака превосходящего сжатия стоить изменения.

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

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

Просто ограничение его к минимуму 8K произвело литералы, но предотвращает больше, чем 32K литералы в блоке привели бы к относительно послушному основанию для попытки спекулятивных алгоритмов. назовите 8K sub блоком.

Самый простой из которых был бы (псевдо код):

create empty sub block called definite
create empty sub block called specChange
create empty sub block called specKeep
target = definite
While (incomingData)
{
  compress data into target(s)    
  if (definite.length % SUB_BLOCK_SIZ) == 0)
  {
    if (targets is definite)
    {
      targets becomes 
        specChange assuming new block 
        specKeep assuming same block as definite
    }        
    else
    {
      if (compression specChange - OVERHEAD better than specKeep)
      {
        flush definite as a block.
        definite = specChange
        specKeep,specChange = empty
        // target remains specKeep,specChange as before 
        but update the meta data associated with specChange to be fresh
      }
      else 
      {
        definite += specKeep
        specKeep,specChange = empty
        // again update the block meta data
        if (definite is MAX_BLOCK_SIZE)
        {
          flush definite
          target becomes definite 
        }
      }
    }
  }
}
take best of specChange/specKeep if non empty and append to definite
flush definite.

НАВЕРХУ некоторая константа для составления стоимости переключения блоков

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

Это могло привести к зданию specChange того, чтобы быть сделанным только, когда эвристика считала это разумным. Если эвристика складывается, сильный индикатор, Вы могли бы затем покончить со спекулятивной природой и просто решить подкачать в точке несмотря ни на что.

2
ответ дан 5 December 2019 в 02:08
поделиться

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

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

Первое, что пришло на ум не очевидно, оказали ли относительное распределение прибрежных кодов по сравнению с длиной, коды расстояния определенное влияние на оптимальный размер блока. Хорошая пища для размышления все же.

0
ответ дан 5 December 2019 в 02:08
поделиться
Другие вопросы по тегам:

Похожие вопросы: