在 Windows 7 上,我使用的是命令行
python -m SimpleHTTPServer 8888
调用一个简单的 Web 服务器来提供目录中的文件,用于开发。
问题是服务器似乎将文件保存在缓存中。尽管有较新的文件可用,但仍提供旧版本的文件。
有没有办法直接从命令行指定“无缓存”选项?
在 Windows 7 上,我使用的是命令行
python -m SimpleHTTPServer 8888
调用一个简单的 Web 服务器来提供目录中的文件,用于开发。
问题是服务器似乎将文件保存在缓存中。尽管有较新的文件可用,但仍提供旧版本的文件。
有没有办法直接从命令行指定“无缓存”选项?
也许这可能会奏效。将以下内容保存到文件中:
服务包
#!/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 上的当前目录提供服务。这完全是从这个 gist中提取的,并且似乎工作得很好!
注意:如果您只是想运行一个本地网络服务器来提供静态内容,您可能会对执行此操作的预设节点解决方案感兴趣 => http-server,我一直在使用它并且看起来效果很好。
此外,如果您在 Mac 上,如果您以 root 身份运行它,您可以在端口 80 或 443 上运行它!例如
sudo python serveit.py 80
应该允许您在浏览器中运行并访问它http://localhost
当然,上面的脚本不适用于 Python 3.x,但它只是由更改为组成,SimpleHTTPServer
如下http.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)
建议你刷新浏览器的时候按Ctrl+F5。
刚碰到这个,它可能就是你要找的东西(顺便说一下,它是用红宝石制作的)
也许是浏览器缓存您的文件而不是 SimpleHTTPServer。尝试先停用浏览器缓存。
我更改为另一个端口号,更新的文件反映在我的浏览器上。
前任。
python -m http.server -p 8000
python -m http.server -p 8001