Что является более быстрой альтернативой Python http.server(или SimpleHTTPServer)?
Python http.server (или SimpleHTTPServer для Python 2) - отличный способ обслуживать содержимое текущего каталога из командной строки:
python -m http.server
Однако, что касается веб-серверов, это очень slooooow...
Он ведет себя так, как будто он однопоточный, и иногда вызывает ошибки при загрузке модулей JavaScript AMD с использованием RequireJS. Для загрузки простой страницы без изображений может потребоваться от пяти до десяти секунд.
Какая более быстрая альтернатива так же удобна?
Ответы
Ответ 1
http-server для node.js очень удобно и намного быстрее, чем Python SimpleHTTPServer. Это связано прежде всего с тем, что он использует асинхронный ввод-вывод для одновременной обработки запросов вместо сериализации запросов.
Установка
Установите node.js, если вы еще этого не сделали. Затем используйте диспетчер пакетов node (npm
), чтобы установить пакет, используя параметр -g
для установки по всему миру. Если вы находитесь в Windows, вам понадобится приглашение с правами администратора, а в Linux/OSX вы захотите sudo
выполнить команду:
npm install http-server -g
Загрузите все необходимые зависимости и установите http-server
.
Использование
Теперь из любой директории вы можете ввести:
http-server [path] [options]
Путь необязателен, по умолчанию используется ./public
, если он существует, в противном случае ./
.
Параметры: [по умолчанию]:
-
-p
Номер порта для прослушивания [8080]
-
-a
Адрес хоста для привязки к [localhost]
-
-i
Показать страницы индекса каталога [True]
-
-s
или --silent
Тихий режим не будет входить в консоль
-
-h
или --help
Отображает справочное сообщение и завершает
Итак, чтобы обслуживать текущий каталог на порту 8000, введите:
http-server -p 8000
Ответ 2
Я рекомендую: Twisted (http://twistedmatrix.com)
управляемый событиями сетевой движок, написанный на Python и лицензированный по лицензии MIT с открытым исходным кодом.
Он кроссплатформенный и был предустановлен на OS X 10.5 до 10.12. Помимо прочего, вы можете запустить простой веб-сервер в текущем каталоге:
twistd -no web --path=.
подробности
Объяснение опций (подробнее см. twistd --help
):
-n, --nodaemon don't daemonize, don't use default umask of 0077
-o, --no_save do not save state on shutdown
"web" - это команда, которая запускает простой веб-сервер поверх асинхронного механизма Twisted. Он также принимает параметры командной строки (после команды "web" - см. twistd web --help
для более подробной информации):
--path= <path> is either a specific file or a directory to be
set as the root of the web server. Use this if you
have a directory full of HTML, cgi, php3, epy, or rpy
files or any other files that you want to be served up
raw.
Есть также множество других команд, таких как:
conch A Conch SSH service.
dns A domain name server.
ftp An FTP server.
inetd An inetd(8) replacement.
mail An email service
... etc
Монтаж
Ubuntu
sudo apt-get install python-twisted-web (or python-twisted for the full engine)
Mac OS-X (предустановлен на 10.5 - 10.12 или доступен в MacPorts и через Pip)
sudo port install py-twisted
Windows
installer available for download at http://twistedmatrix.com/
HTTPS
Twisted также может использовать сертификаты безопасности для шифрования соединения. Используйте это с вашими существующими --path
и --port
(для простого HTTP).
twistd -no web -c cert.pem -k privkey.pem --https=4433
Ответ 3
go 1.0 включает http server и использовать для обслуживания файлов с несколькими строками кода.
package main
import (
"fmt"; "log"; "net/http"
)
func main() {
fmt.Println("Serving files in the current directory on port 8080")
http.Handle("/", http.FileServer(http.Dir(".")))
err := http.ListenAndServe(":8080", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
Запустите этот источник с помощью go run myserver.go
или для создания исполняемого файла go build myserver.go
Ответ 4
Попробуйте webfs, он крошечный и не зависит от наличия платформы, такой как node.js или python.
Ответ 5
Если вы используете Mercurial, вы можете использовать встроенный HTTP-сервер. В папке, которую вы хотите подать:
hg serve
Из документов:
export the repository via HTTP
Start a local HTTP repository browser and pull server.
By default, the server logs accesses to stdout and errors to
stderr. Use the "-A" and "-E" options to log to files.
options:
-A --accesslog name of access log file to write to
-d --daemon run server in background
--daemon-pipefds used internally by daemon mode
-E --errorlog name of error log file to write to
-p --port port to listen on (default: 8000)
-a --address address to listen on (default: all interfaces)
--prefix prefix path to serve from (default: server root)
-n --name name to show in web pages (default: working dir)
--webdir-conf name of the webdir config file (serve more than one repo)
--pid-file name of file to write process ID to
--stdio for remote clients
-t --templates web templates to use
--style template style to use
-6 --ipv6 use IPv6 in addition to IPv4
--certificate SSL certificate file
use "hg -v help serve" to show global options
Ответ 6
Здесь другое. Это расширение Chrome
После установки вы можете запустить его, создав новую вкладку в Chrome и нажав кнопку приложений в левом верхнем углу.
У него простой графический интерфейс. Нажмите "Выбрать папку", затем нажмите ссылку http://127.0.0.1:8887
![enter image description here]()
https://www.youtube.com/watch?v=AK6swHiPtew
Ответ 7
Также рассмотрите devd небольшой веб-сервер, написанный в go. Здесь доступны бинарные файлы для многих платформ здесь.
devd -ol path/to/files/to/serve
Он маленький, быстрый и предоставляет некоторые интересные дополнительные функции, такие как перезагрузка при изменении файлов.
Ответ 8
Я нашел python -m http.server
ненадежным - некоторые ответы заняли бы секунды.
Теперь я использую сервер под названием Ran https://github.com/m3ng9i/ran
Ran: простой статический веб-сервер, написанный на Go
Ответ 9
дайте polpetta попробовать...
npm install -g polpettap >
то вы можете
polpetta ~/folder
и вы готовы к работе: -)
Ответ 10
Использование Servez в качестве сервера
- Скачать Сервез
- Установите его, запустите
- Выберите папку для обслуживания
- Пик "Старт"
- Зайдите на
http://localhost:8080
или выберите "Запустить браузер"
![servez]()
Примечание. Я создал это вместе, потому что веб-сервер для Chrome исчезает, поскольку Chrome убирает поддержку приложений, а также потому, что я поддерживаю студентов, которые не имеют опыта работы с командной строкой.
Ответ 11
Мне нравится live-сервер. Он быстрый и имеет приятную функцию перезагрузки в реальном времени, что очень удобно во время разработки.
Использование очень просто:
cd ~/Sites/
live-server
По умолчанию он создает сервер с IP 127.0.0.1 и портом 8080.
http://127.0.0.1:8080/
Если порт 8080 не свободен, он использует другой порт:
http://127.0.0.1:52749/
http://127.0.0.1:52858/
Если вам нужно увидеть веб-сервер на других компьютерах в вашей локальной сети, вы можете проверить, какой у вас IP, и использовать:
live-server --host=192.168.1.121
А вот скрипт, который автоматически захватывает IP-адрес интерфейса по умолчанию. Работает только на macOS.
Если вы поместите его в .bash_profile
, команда live-server
автоматически запустит сервер с правильным IP.
# **
# Get IP address of default interface
# *
function getIPofDefaultInterface()
{
local __resultvar=$1
# Get default route interface
if=$(route -n get 0.0.0.0 2>/dev/null | awk '/interface: / {print $2}')
if [ -n "$if" ]; then
# Get IP of the default route interface
local __IP=$( ipconfig getifaddr $if )
eval $__resultvar="'$__IP'"
else
# Echo "No default route found"
eval $__resultvar="'0.0.0.0'"
fi
}
alias getIP='getIPofDefaultInterface IP; echo $IP'
# **
# live-server
# https://www.npmjs.com/package/live-server
# *
alias live-server='getIPofDefaultInterface IP && live-server --host=$IP'