鱼C论坛

 找回密码
 立即注册
查看: 3105|回复: 6

python的http server 怎么禁用缓存?

[复制链接]
发表于 2023-2-10 20:38:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 blackantt 于 2023-2-10 21:12 编辑

请问  python的http server 怎么禁用缓存?(python -m http.server 80)

文件都改了,页面还是原来样子



https://www.codenong.com/c87005eebfe06307fe6a/

如果您有Python,可以使用以下命令启动一个用于从浏览器访问本地HTML文件的简单HTTP服务器。

1
2
$ python -m http.server 8080
Serving HTTP on 0.0.0.0 port 8080 (http://0.0.0.0:8080/) ...
如果执行此命令并使用同一台PC上的浏览器访问http://本地主机:8080 /,则将显示当前目录中的index.html。

麻烦

在某些情况下,即使缓存有效并重新加载,浏览器也不会向简单的HTTP服务器发出请求,即使本地文件已被编辑,浏览器也无法确认。您可以从浏览器中清除缓存,但这很麻烦。

因此,缓存过期日期0包含在来自简单HTTP服务器的响应中。

禁用缓存的Python脚本


import http.server
import sys

port = int(sys.argv[1])

class NoCacheHTTPRequestHandler(http.server.SimpleHTTPRequestHandler):
    def end_headers(self):
        self.send_header('Cache-Control', 'max-age=0')
        self.send_header('Expires', '0')
        super().end_headers()

httpServer = http.server.HTTPServer(('', port), NoCacheHTTPRequestHandler)
httpServer.serve_forever()
如果使用诸如

server.py之类的名称保存该脚本,则以下命令将启动服务器。

1
$ python server.py 8080
您还可以使用curl命令检查

响应标头。打开另一个终端并运行它。


$ curl -I http://localhost:8080/
HTTP/1.0 200 OK
Server: SimpleHTTP/0.6 Python/3.8.3
Date: Thu, 12 Nov 2020 13:31:44 GMT
Content-type: text/html
Content-Length: 1178
Last-Modified: Thu, 12 Nov 2020 13:21:38 GMT
Cache-Control: max-age=0
Expires: 0

现在,

浏览器每次都会发送一个请求,并且本地文件中的更改会立即反映出来。

版本信息


$ python --version
Python 3.8.3
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-2-10 20:42:02 | 显示全部楼层
你指的是 python -m http.server ?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-10 20:58:08 | 显示全部楼层
isdkz 发表于 2023-2-10 20:42
你指的是 python -m http.server ?

是啊,怎么 加点料,来禁用缓存?

cmd /k "python -m http.server 80"
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-10 21:05:58 | 显示全部楼层
blackantt 发表于 2023-2-10 20:58
是啊,怎么 加点料,来禁用缓存?

cmd /k "python -m http.server 80"

这个好像没有缓存呀,我试了是没有问题的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-10 21:08:12 | 显示全部楼层
会不会是路径上其他位置的缓存,比如浏览器?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-2-10 21:10:08 | 显示全部楼层
isdkz 发表于 2023-2-10 21:05
这个好像没有缓存呀,我试了是没有问题的

可能你浏览器设了禁用。  如果你浏览器设了禁用,那平常上网又会慢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-2-10 21:16:17 | 显示全部楼层
blackantt 发表于 2023-2-10 21:10
可能你浏览器设了禁用。  如果你浏览器设了禁用,那平常上网又会慢

意思是要让服务器指示浏览器不要缓存吗?可以用 Cache-Control 头,但看了一下从命令行直接启动的 http.server 似乎没有能自定义响应头的选项
https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
https://docs.python.org/3/library/http.server.html
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-24 17:10

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表