我想知道,如何实际禁用客户端缓存?
这似乎是一个重复的问题,但随着 Web 浏览器随着时间的推移不断变化和发展,我不相信当缓存功能被停用时,所有浏览器(或其中任何一个)实际上都会按预期运行。
在过去的 7 到 8 年开发 Web 应用程序中,我经常遇到我在浏览器中禁用缓存的问题,结果发现它确实在缓存 javascript 资源(或 css)。我将 Shift+F5(或 shift refresh / ctrl + shift + r)永久地烧在我的手中,作为刷新页面的反射,以至于我需要积极思考才能不以这种方式刷新页面。即使我随便浏览(不工作),我也会移动+刷新!不过,我不相信这总是在做我期望它做的事情。
例如,我在 Chrome 中将所有缓存功能设置为关闭。我仍然经常遇到被缓存的资源(javascript),以至于我什至不再使用 Chrome 作为开发工具。正如其他人所观察到的,Safari 清除缓存的选项在刷新后仍然可以返回缓存的数据。Firefox 在版本之间的缓存行为相当不一致。Firebug for Firefox 有时也会返回陈旧的资源。我发现真正清除缓存的唯一工具是 Firefox Web 开发人员工具包插件的“禁用缓存”选项。
为什么是这样?为什么我可以花一个小时不断地进行更改并按 shift+f5 来观察它们,只是对为什么我的更改没有生效感到困惑?自然,当我向同事寻求帮助时,所谓的非活动缓存总是会过期!
大多数情况下,浏览器的缓存功能将按预期处理页面内容。例如,如果我在 Chrome 或 Firefox 中禁用了所有缓存功能,则 rss 提要或网页等的内容将始终以新鲜且未缓存的方式返回。CSS/JS 之类的资源仍然经常返回陈旧。我在 Mac OSX、Ubuntu Linux 和 MS Windows 环境中工作,主要使用 PHP 和 Ruby/Rails,而且几乎只使用 FF/Chrome,尽管偶尔我不得不使用 Safari(而且我只接触过一些像 Internet Explorer 这样的东西被迫时)。无论如何,这个禁用缓存问题对我来说无处不在。我觉得我被迫只在 Firefox 中进行开发,并且 Web 开发人员工具包设置为禁用所有缓存。
谁能帮我理解为什么?