pip3 - Invoque Python SimpleHTTPServer desde la línea de comandos sin opción de caché
python-m simplehttpserver 8000 (4)
En Windows 7, estoy usando la línea de comandos
python -m SimpleHTTPServer 8888
para invocar un servidor web simple para servir archivos desde un directorio, para su desarrollo.
El problema es que el servidor parece mantener los archivos en caché. Las versiones antiguas de los archivos se sirven a pesar de que hay nuevas disponibles.
¿Hay una manera de especificar la opción "no caché" desde la línea de comandos directamente?
Le sugiero que presione Ctrl + F5 al actualizar el navegador.
Solo encontré this , puede ser lo que está buscando (por cierto, está en ruby)
Por supuesto, el script anterior no funcionará para Python 3.x, pero solo consiste en cambiar SimpleHTTPServer a http.server como se muestra a continuación:
#!/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)
Lo siento, habría agregado como comentario, pero aparentemente no tengo suficiente reputación ...
Quizás esto pueda funcionar. Guarda lo siguiente en un archivo:
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)
luego ejecútalo usando
python serveit.py 8000
para servir el directorio actual en el puerto 8000. ¡Esto fue totalmente sacado de esta esencia , y parece funcionar muy bien!
NOTA: si solo está buscando ejecutar un servidor web local para ofrecer contenido estático, es posible que le interese una solución de nodos precompensados para hacer esto => http-server , que he estado usando y parece funcionar muy bien.
Además, si está en un mac, si lo ejecuta como root, puede ejecutarlo en el puerto 80 o 443. Por ejemplo
sudo python serveit.py 80
debería permitirle ejecutarlo y acceder a él desde su navegador en http://localhost
Tal vez sea el navegador que almacena en caché sus archivos, no el SimpleHTTPServer. Intenta desactivar primero el caché del navegador.