Вам НУЖНО открыть его, иначе вы не будете знать, на какой URL он будет перенаправлен.Как сказал Грег:
Короткая ссылка - это ключ к чужой базе данных;Вы не можете расширить ссылку, не запросив базу данных
Теперь к вашему вопросу.
Кто-нибудь знает о более эффективном способе выполнения этой операции без использования open (поскольку это бесполезная трата пропускной способности)?
Более эффективный способ - не закрывать соединение, оставьте его открытым в фоновом режиме, используя HTTP Connection: keep-alive
.
.Небольшой тест unshorten.me, похоже, учитывает метод HEAD
и выполняет перенаправление на себя:
> telnet unshorten.me 80
Trying 64.202.189.170...
Connected to unshorten.me.
Escape character is '^]'.
HEAD http://unshort.me/index.php?r=http%3A%2F%2Fbit.ly%2FcXEInp HTTP/1.1
Host: unshorten.me
HTTP/1.1 301 Moved Permanently
Date: Mon, 22 Aug 2011 20:42:46 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Location: http://resolves.me/index.php?r=http%3A%2F%2Fbit.ly%2FcXEInp
Cache-Control: private
Content-Length: 0
Так что если вы используете метод HEAD
HTTP вместо GET
, вы на самом деле будете выполнять одну и ту же работу дважды .
Вместо этого вы должны поддерживать соединение живым, что сэкономит вам лишь небольшую пропускную способность, но то, что оно будет безусловно, экономит задержка при установлении нового соединения каждый раз.Установление TCP / IP-соединения стоит дорого .
Вам должно быть предоставлено количество поддерживаемых соединений с несжатым сервисом, равное количеству одновременных соединений, которые получает ваш собственный сервис.
Вы можете управлять этими соединениями в пуле.Это самое близкое, что вы можете получить.Помимо настройка вашего ядра стека TCP / IP.