我有以下问题:我知道如果我加上"?v=*"在我的Javascript中包含如下<script src="/js/myJsFile1.js?v=1.1" type="text/javascript"></script>
我可以强制客户端到达。
现在我的问题是,如果我有一个片段,如下面的example.php…
<?php ... ?>
<script>
var a = 5;
callRandomFunction();
</script>
…是否有必要对这个片段进行版本控制?由于它包含在PHP文件中,因此总是从服务器调用,强制缓存在这里有意义吗?
如果有——有没有类似的方法来处理"?v="附件吗?
混淆点:
- "caching"是指对内容的再利用;你所说的技术不是"强制缓存",而是强制浏览器而不是使用缓存副本 。
- 这个参数对浏览器没有任何意义,它只意味着这是一个浏览器以前从未见过的URL,所以它不会有缓存副本
- 浏览器不会看到某些内容是PHP页面的一部分,只会看到它是HTML页面的一部分
- 浏览器不缓存页面的部分,所以如果该HTML页面被缓存,JS里面的页面也被缓存;如果不是,那就不是
- 要清楚,JS在一个单独的URL上服务,但在HTML页面中引用将单独缓存,这就是为什么更改每个版本的URL会产生差异
所以,问题归结为:
我的HTML页面会被缓存吗?
答案取决于缓存头,这是HTTP中令人惊讶的复杂部分。简单来说,PHP通常会设置header,告诉浏览器而不是缓存它生成的页面。
所以真正简短的答案是:不,你不需要做任何事情。