从没有缓存选项的命令行调用Python SimpleHTTPServer

2024-05-12 17:52:50 发布

您现在位置:Python中文网/ 问答频道 /正文

在Windows7上,我使用命令行

python -m SimpleHTTPServer 8888

调用一个简单的web服务器来提供目录中的文件,以便进行开发。

问题是服务器似乎将文件保存在缓存中。尽管有新版本的文件可用,但仍提供旧版本的文件。

有没有办法直接从命令行指定“无缓存”选项?


Tags: 文件命令行版本服务器目录web选项办法
4条回答

也许这能奏效。将以下内容保存到文件中:

服务时间

#!/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服务器来提供静态内容,那么您可能会对一个precanned node solution to do this => http-server感兴趣,我一直在使用它,它看起来工作得很好。

如果你在mac上,如果你以根用户身份运行,你可以在端口80或443上运行!例如

sudo python serveit.py 80

应该允许您运行它并在浏览器中访问它http://localhost

我建议您在刷新浏览器时按Ctrl+F5。

刚刚遇到this,可能就是你要找的东西(顺便说一句,是用ruby写的)

当然,上面的脚本不适用于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)

很抱歉,我会加上评论,但显然我没有足够的代表。。。

也许这能奏效。将以下内容保存到文件中:

服务时间

#!/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上的当前目录。这是完全被拉from this gist,似乎工作伟大!

注意:如果您只是想运行一个本地web服务器来提供静态内容,那么您可能会对一个precanned node solution to do this => http-server感兴趣,我一直在使用它,它看起来工作得很好。

如果你在mac上,如果你以根用户身份运行,你可以在端口80或443上运行!例如

sudo python serveit.py 80

应该允许您运行它并在浏览器中访问它http://localhost

相关问题 更多 >