Вместо прямого сравнения строк (VB не найдет их равными, так как GetEnvironmentVariable возвращает строку длиной 255), напишите это:
Private Sub Workbook_Open()
If InStr(1, GetEnvironmentVariable("InBatch"), "TRUE", vbTextCompare) Then
Debug.Print "Batch"
Call Macro
Else
Debug.Print "Normal"
End If
End Sub
Не относитесь слишком серьезно к «СЛЕДУЕТ». IE в какой-то момент использовал только 2 одновременных соединения. Даже в этот момент была возможность снять ограничение (через «взломать»).
В настоящее время ограничение ограничено 8, в большинстве браузеров (включая Firefox, сафари). IE8 имеет 6 соединений на каждый хост.
Как вы можете себе представить, 2 подключения на хост слишком малы. Вы не смогли бы загрузить страницу с хоста, у вас было 2 текущих загрузки с одного и того же хоста!
И если вы используете соединение: заголовок keep-alive, все пять ваших изображений будут загружаться в одном и том же TCP-соединении, а не прекращать соединение и переделывать его, в случае соединения: Закрыть.
Это неэффективно, так как трехстороннее TCP-соединение должно быть переделано каждый раз, когда вы запрашиваете изображение!
В HTTP 1.1 все соединения поддерживаются в живых, если не указано иное следующий заголовок: Соединение: закрыть
С другой стороны, у вас также есть конвейер HTTP (см. ответ Майка Кэрона), который не дожидается возврата одного запроса перед отправкой другого. Это реализовано firefox (как вы можете увидеть / отключить в about: config), но это другая проблема из Maximum Connections для каждого хоста.
Также: Если вы не используете постоянные соединения с конвейерной обработкой, вы будете создавать несколько соединений. Отправка одного запроса перед закрытием предыдущего. Это блокировалось бы из-за предела максимальных соединений.
Клиент может использовать несколько соединений для параллельной загрузки ресурсов. Например, в вашем примере может быть принято решение загружать image1.gif
и image2.gif
одновременно по двум соединениям. Если мы предположим, что image1.gif
заканчивается первым, он будет стоять в очереди image3.gif
на этом соединении. И т. Д.
У меня нет доказательств этого, но я сильно подозреваю, что большинство браузеров закроют все соединения после того, как они загрузят все ресурсы на странице. Если пользователь нажимает на другую страницу, он откроет новые соединения.
Два ограничения соединения - это соглашение больше, чем что-либо. Ничто не мешает браузеру открыть 50, если захочет. Тем не менее, на этом уровне использование полосы пропускания является ограничивающим фактором, поэтому большинство браузеров (я подозреваю) ограничивают себя несколькими связями.
Опять же, ничто не останавливает их, однако уменьшаются отдачи от того, что многие соединения.