45

Windows 7では、コマンドラインを使用しています

python -m SimpleHTTPServer 8888

開発のために、ディレクトリからファイルを提供するために単純なWebサーバーを呼び出します。

問題は、サーバーがファイルをキャッシュに保持しているように見えることです。新しいバージョンが利用可能であるにもかかわらず、古いバージョンのファイルが提供されます。

コマンドラインから直接「キャッシュなし」オプションを指定する方法はありますか?

4

5 に答える 5

50

おそらくこれはうまくいくかもしれません。以下をファイルに保存します。

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​​で現在のディレクトリを提供します。これはこの要点から完全に引き出されたものであり、うまく機能しているようです。

注:静的コンテンツを提供するためにローカルWebサーバーを実行することだけを考えている場合は、これを行うための事前に用意されたノードソリューションに興味があるかもしれません=> http-server、これは私が使用していて、うまく機能しているようです。

また、Macを使用している場合、これをrootとして実行すると、ポート80または443で実行できます。例えば

sudo python serveit.py 80

それを実行し、ブラウザでアクセスできるようにする必要があります。http://localhost

于 2014-09-07T09:46:44.443 に答える
29

もちろん、上記のスクリプトはPython 3.xでは機能しませんが、以下に示すようにをに変更するだけですSimpleHTTPServerhttp.server

#!/usr/bin/env python3

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)
于 2015-02-25T00:18:52.893 に答える
11

ブラウザを更新するときは、Ctrl+F5を押すことをお勧めします。

ちょうどこれに遭遇しまし、それはあなたが探しているものかもしれません(ちなみに、それはルビーにあります)

于 2012-08-30T10:31:55.517 に答える
6

SimpleHTTPServerではなく、ファイルをキャッシュしているのはブラウザかもしれません。最初にブラウザのキャッシュを無効にしてみてください。

于 2012-08-30T09:35:07.547 に答える
1

別のポート番号に変更すると、更新されたファイルがブラウザに反映されました。

元。

python -m http.server -p 8000

python -m http.server -p 8001
于 2021-11-27T00:37:07.930 に答える