Подтвердить что ты не робот

Вызывать Python SimpleHTTPServer из командной строки без опции кеша

В Windows 7 я использую командную строку

python -m SimpleHTTPServer 8888

чтобы вызвать простой веб-сервер для работы с файлами из каталога для разработки.

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

Можно ли указать параметр "без кэша" из командной строки напрямую?

4b9b3361

Ответ 1

Я предлагаю вам нажать Ctrl + F5 при обновлении браузера.

Просто наткнулся на этот, это может быть просто то, что вы ищете (это в рубине, между прочим)

Ответ 2

Возможно, это может сработать. Сохраните следующее в файле:

serveit.py

#!/usr/bin/env python
import SimpleHTTPServer

class MyHTTPRequestHandler(SimpleHTTPServer.SimpleHTTPRequestHandler):
    def end_headers(self):
        self.send_my_headers()
        SimpleHTTPServer.SimpleHTTPRequestHandler.end_headers(self)

    def send_my_headers(self):
        self.send_header("Cache-Control", "no-cache, no-store, must-revalidate")
        self.send_header("Pragma", "no-cache")
        self.send_header("Expires", "0")


if __name__ == '__main__':
    SimpleHTTPServer.test(HandlerClass=MyHTTPRequestHandler)

затем запустите его, используя

python serveit.py 8000

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

ПРИМЕЧАНИЕ. Если вы просто хотите запустить локальный веб-сервер для обслуживания статического контента, вас может заинтересовать готовое решение node, чтобы сделать это = > http-server, который я использую и, кажется, отлично работает.

Также, если вы на Mac, если вы запустили его как root, вы можете запустить его на порту 80 или 443! Например

sudo python serveit.py 80

должен позволить вам запустить его и получить к нему доступ в браузере http://localhost

Ответ 3

Конечно, script выше не будет работать для Python 3.x, но он просто состоит в изменении SimpleHTTPServer на http.server, как показано ниже:

#!/usr/bin/env python
import http.server

class MyHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    def end_headers(self):
        self.send_my_headers()
        http.server.SimpleHTTPRequestHandler.end_headers(self)

    def send_my_headers(self):
        self.send_header("Cache-Control", "no-cache, no-store, must-revalidate")
        self.send_header("Pragma", "no-cache")
        self.send_header("Expires", "0")


if __name__ == '__main__':
    http.server.test(HandlerClass=MyHTTPRequestHandler)

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

Ответ 4

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