有没有办法从文件系统获得304 Not Modified(而不是200和文件的内容)响应,例如,如果我访问file:///img.png和浏览器已经缓存了这个文件吗?
我的意思是,如果没有设置通过http进行通信的文件服务器,我可以这样做吗?或者,这仅仅是文件协议的限制。
答案 0 :(得分:1)
你做不到。这是file:protocol的限制。实际上,该协议没有定义200或304代码。这些代码特定于http protocol。
关于浏览器是否可以使用文件的缓存副本,客户端负责加载文件资源本身。没有服务器组件可以知道文件是否被修改。交互中唯一可以知道的组件是浏览器,它确切知道的唯一方法是加载文件。
它可以在理论上检查时间戳,也许某些浏览器会这样做,但是具有与先前加载相同的时间戳并不能保证文件未被修改。至少在某些系统上,可以通过系统调用更改上次修改时间。