Что является более быстрой альтернативой http.server Python (или SimpleHTTPServer)?

Http.server (или SimpleHTTPServer для Python 2) в Python - отличный способ передать содержимое текущего каталога из командной строки:

python -m http.server

Тем не менее, что касается веб-серверов, это очень запутанно...

Он ведет себя так, как будто он однопоточный, и иногда вызывает ошибки тайм-аута при загрузке JavaScript-модулей AMD с помощью RequireJS. Загрузка простой страницы без изображений может занять от пяти до десяти секунд.

Какая более быстрая альтернатива, которая так же удобна?

15 ответов

Решение

http-сервер для node.js очень удобен и работает намного быстрее, чем SimpleHTTPServer в Python. Это в первую очередь потому, что он использует асинхронный ввод-вывод для одновременной обработки запросов, а не сериализации запросов.

Монтаж

Установите node.js, если вы этого еще не сделали. Затем используйте менеджер пакетов узла (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

Я рекомендую: Twisted ( http://twistedmatrix.com/)

управляемый событиями сетевой движок, написанный на Python и лицензированный по лицензии MIT с открытым исходным кодом.

Он кроссплатформенный и предустановлен на OS X начиная с 10.5. Помимо прочего, вы можете запустить простой веб-сервер в текущем каталоге:

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 или доступна в MacPorts)

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

Go 1.0 включает в себя http-сервер и утилиту для обслуживания файлов с несколькими строками кода.

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

Попробуйте webfs, он крошечный и не зависит от наличия платформы, такой как node.js или python.

Если вы используете 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

Вот еще один Это расширение Chrome

После установки вы можете запустить его, создав новую вкладку в Chrome и нажав кнопку приложений в левом верхнем углу.

У него простой графический интерфейс. Нажмите выбрать папку, затем нажмите http://127.0.0.1:8887 ссылка на сайт

https://www.youtube.com/watch?v=AK6swHiPtew

Я нашел python -m http.server ненадежный - некоторые ответы займут секунды.

Теперь я использую сервер с именем Ran https://github.com/m3ng9i/ran

Ran: простой статический веб-сервер, написанный на Go

Также рассмотрим devd небольшой веб-сервер, написанный на go. Двоичные файлы для многих платформ доступны здесь.

devd -ol path/to/files/to/serve

Он небольшой, быстрый и предоставляет некоторые интересные дополнительные функции, такие как повторная загрузка в реальном времени при изменении файлов.

Если у вас установлен PHP, вы можете использовать встроенный сервер.

php -S 0:8080

Попробуй полпетту...

npm install -g polpetta

тогда ты можешь

polpetta ~/ папка

и ты готов к работе:-)

Использование Servez в качестве сервера

  1. Скачать Сервез
  2. Установите его, запустите
  3. Выберите папку для обслуживания
  4. Пик "Старт"
  5. Идти к http://localhost:8080 или выберите "Запустить браузер"

servez

Примечание. Я создал это вместе, потому что веб-сервер для Chrome исчезает, поскольку Chrome убирает поддержку приложений, а также потому, что я поддерживаю студентов, которые не имеют опыта работы с командной строкой.

Мне нравится 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'

Еще один простой сервер командной строки на основе узла

https://github.com/greggman/servez-cli

Отчасти написано в ответ на возникновение проблем с http-сервером, особенно в Windows.

установка

Затем установите node.js

npm install -g servez

Применение

servez [options] [path]

Без пути он обслуживает текущую папку.

По умолчанию обслуживает index.htmlдля путей к папкам, если они существуют. В противном случае он служит списком каталогов для папок. Он также обслуживает заголовки CORS. При желании вы можете включить базовую аутентификацию с помощью--username=somename --password=somepass и вы можете обслуживать https.

мини-сервировка

мини-сервировка

  • кроссплатформенный
  • один исполняемый файл
  • легкий (<2 МБ для Windows/Linux x86)
      miniserve . --index index.html

Версельserve(узел.js)

Если установлен node.js , я рекомендую Vercel Serve.

      # for node.js >= v14
npm install --global serve

# for node.js <= v13
npm install --global serve@13
      serve

http-server(узел.js)

Последняя версия http-сервера не работает (см. проблему ), но v13 работает

      npm install --global http-server@13
http-server

Я использую файловый браузер последние пару лет, и это лучшая альтернатива, которую я нашел.

Особенности, которые мне в нем нравятся:

  • Кроссплатформенность: поддерживает Linux, MacOs и Windows (+) . Он также поддерживает докер (+).
  • Скачивание материалов — это несложно. Он может автоматически конвертировать папку вzip,tar.gzи т. д. для переноса папок.
  • Вы можете получить доступ к файлам или папкам для каждого использования.

Другие вопросы по тегам