javascript - 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 =”附录类似的方法?
解决方案
几个混淆点:
- “缓存”是指重用内容;您正在谈论的技术不是“强制缓存”,它们迫使浏览器不使用缓存副本
- 该参数对浏览器没有任何意义,它只是意味着这是一个浏览器从未见过的 URL,因此它不会有缓存副本
- 浏览器看不到某个东西是 PHP 页面的一部分,只是认为它是HTML页面的一部分
- 浏览器不缓存部分页面,所以如果该 HTML 页面被缓存,页面内的 JS也会被缓存;如果不是,则不是
- 需要明确的是,JS 在单独的 URL 上提供但在 HTML 页面中引用将被单独缓存,这就是为什么为每个版本更改 URL 会有所不同
所以,问题归结为:
我的 HTML 页面会被缓存吗?
答案取决于缓存标头,这是 HTTP 的一个非常复杂的部分。但简短的版本是 PHP 通常会设置标题告诉浏览器不要缓存它生成的页面。
所以真正简短的回答是:不,你不需要做任何事情。
推荐阅读
- python - 如何获取 JSON 文件的缩进?
- python - python中关键字值参数的目的?
- web.config-transform - Visual Studio ASP XML web.config 转换换行
- google-sheets - 将索引 XAO 价格导入谷歌表
- python - 如何自定义 python 记录器行为?
- sql - RIGHT JOIN 是使用此查询的方式吗?
- azure - 为什么我的 Bing 认知服务请求返回 401?
- cmake - 带有 CMake 的 STM32 项目
- c# - 编译器错误 MT2002:当 IOS 应用程序 (Xamarin) 引用 VB.NET Windows 窗体项目中的类时
- python - Chrome 的源 HTML 与 Internet Explorer 不同?