首页 > 解决方案 > PHP文件中的自动版本控制内联Javascript?

问题描述

我有以下问题/问题:我知道如果我在我的 Javascript 中添加类似“?v = *”的内容,例如 <script src="/js/myJsFile1.js?v=1.1" type="text/javascript"></script>我可以强制客户端重新缓存。

现在我的问题是,如果我在 example.php 中有如下片段...

<?php ... ?> 
<script> 
    var a = 5; 
    callRandomFunction(); 
</script> 

...是否也需要对此片段进行版本控制?由于它包含在 PHP 文件中,因此总是从服务器调用,强制缓存在这里有意义吗?
如果是这样 - 是否有与“?v =”附录类似的方法?

标签: javascriptphp

解决方案


几个混淆点:

  • “缓存”是指重用内容;您正在谈论的技术不是“强制缓存”,它们迫使浏览器使用缓存副本
  • 该参数对浏览器没有任何意义,它只是意味着这是一个浏览器从未见过的 URL,因此它不会有缓存副本
  • 浏览器看不到某个东西是 PHP 页面的一部分,只是认为它是HTML页面的一部分
  • 浏览器不缓存部分页面,所以如果该 HTML 页面被缓存,页面的 JS也会被缓存;如果不是,则不是
    • 需要明确的是,JS 在单独的 URL 上提供但在 HTML 页面中引用被单独缓存,这就是为什么为每个版本更改 URL 会有所不同

所以,问题归结为:

我的 HTML 页面会被缓存吗?

答案取决于缓存标头,这是 HTTP 的一个非常复杂的部分。但简短的版本是 PHP 通常会设置标题告诉浏览器不要缓存它生成的页面。

所以真正简短的回答是:不,你不需要做任何事情。


推荐阅读