我在Windows 7上使用命令行
python -m SimpleHTTPServer 8888
为了进行开发,调用一个简单的Web服务器从目录中提供文件。
问题是该服务器似乎将文件缓存在内存中。即使有更新的文件可用,仍然提供旧版本的文件。
是否有办法直接从命令行指定“无缓存”选项?
我在Windows 7上使用命令行
python -m SimpleHTTPServer 8888
为了进行开发,调用一个简单的Web服务器从目录中提供文件。
问题是该服务器似乎将文件缓存在内存中。即使有更新的文件可用,仍然提供旧版本的文件。
是否有办法直接从命令行指定“无缓存”选项?
也许这会起作用。将以下内容保存到文件中:
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 服务器来服务于静态内容,那么你可能会对一个缓存的node解决方案http-server感兴趣,我一直在使用它,效果很棒。
另外,如果你使用的是Mac,如果以root身份运行它,你可以在80或443端口上运行它!例如:
sudo python serveit.py 80
就可以让你在浏览器中通过http://localhost
来访问它。
.bash_profile
дёӯеҸҜд»ҘдҪҝе…¶жӣҙеҠ ж–№дҫҝпјҡalias server="open http://localhost:8000/ && echo 'Starting server at localhost:8000' && python ~/serveit.py 8000 > /dev/null 2>&1"
- Jörn Zaefferer当然,上面的脚本在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。
刚刚遇到了这个,也许正是您正在寻找的东西(顺便说一句,它是用Ruby编写的)。
$.ajaxSetup({cache: false});
也无法解决它。 - Synessopython -m http.server -p 8000
python -m http.server -p 8001