在Windows 7上,我使用的是命令行
python -m SimpleHTTPServer 8888
调用一个简单的Web服务器来提供目录中的文件,以便进行开发。
问题是服务器似乎将文件保留在缓存中。尽管有较新版本的文件可供使用,但仍会提供旧版本的文件。
有没有办法直接从命令行指定“no cache”选项?
答案 0 :(得分:46)
也许这可行。将以下内容保存到文件中:
<强> 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上提供当前目录。这完全被拉from this gist,看起来效果很好!
注意:如果您只是想运行本地网络服务器来提供静态内容,那么您可能会对precanned node solution to do this => http-server感兴趣,我一直在使用它并且似乎效果很好。
此外,如果你在Mac上,如果你以root身份运行它,你可以在端口80或443上运行它!例如
sudo python serveit.py 80
应该允许您运行它并在浏览器中http://localhost
答案 1 :(得分:12)
当然上面的脚本不适用于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)
抱歉,我会添加评论,但显然我没有足够的代表......
答案 2 :(得分:8)
我建议您在刷新浏览器时按Ctrl + F5。
刚刚遇到this,它可能就是你正在寻找的东西(顺便说一句,它是红宝石)
答案 3 :(得分:5)
也许是浏览器缓存你的文件而不是SimpleHTTPServer。请先尝试停用浏览器缓存。