【问题标题】:How can I ensure users have the latest version of my PHP JavaScript? [duplicate]如何确保用户拥有我的 PHP JavaScript 的最新版本? [复制]
【发布时间】:2017-09-13 07:06:17
【问题描述】:

需要明确的是,这与脚本标签无关。我没有使用它们。这是使用 PHP 包含放置在页面上的 JS。

我的大多数 JavaScript 文件都混合在 PHP 中,并使用 PHP 的 include 而不是 script 标签。通常解决方案是在脚本标签的 src 属性末尾添加一个查询字符串。据我所知,当我使用 include 时,我真的不能这样做。在大多数情况下,我在移动设备上遇到问题,用户无法在他们的设备上获取最新的 JS 源而不是旧的存储缓存版本。

【问题讨论】:

  • 一个 .php 文件就是一个 .php 文件。 JavaScript 文件是 JavaScript 文件。一个可能包含另一个的语法,但非文件扩展名代码将被视为字符串。
  • 我要问的是,我如何强制用户获取我的源代码的最新版本?
  • 设置过期标头是一种可能
  • 我认为人们如此迅速地诉诸否定的 cmets 并在没有任何解释的情况下投反对票是愚蠢的。这是一个公平的问题。
  • “它会强制用户每次访问页面时都下载 JS” 您无法提前知道何时发布更改,所以您无法确定将缓存到期设置为多长时间。这就是为什么缓存失效是计算机科学中最难的两件事之一。 (另一个当然是命名事物,以及一个接一个的错误。)

标签: javascript php caching include


【解决方案1】:

好吧,如果你使用 include() 函数来引用 .php 文件。 您也可以在该 .php 文件中添加最新 .js 的地址变量

//file to include
...
<script src="<php? echo $latest_JS_reference ?>" ></script>
...

【讨论】:

  • &lt;php? 相信这是一个错字
  • 谢谢。我试图记住是否有任何理由我曾经将 JS 包含在脚本标签中而没有将其包含在内。有些我会,有些我不会。无论哪种方式,它要么是像你那样的回显字符串,要么是包含。
  • 我在使用这样的嵌入式源时遇到大量 JS 错误。也尝试将标题内容类型设置为 application/javascript。
  • 我刚刚弄清楚为什么这不起作用。这是因为如果我使用嵌入源的脚本标签,它会将其移动到我的头标签中。 (可能取决于浏览器)可能,我需要找到一个解决方案,让它在 head 标签中没问题。
【解决方案2】:

你能做的不多,通常 javascript 会自动重新加载,但有时 chrome 会保留缓存并拒绝加载新代码(在 PC 中你可以尝试 ctrl + F5)。

您可以做的是在可关闭的工具提示/模式等中显示一些建议,例如“如果您遇到问题,请尝试删除 cookie 和缓存”。

【讨论】:

  • 谢谢,但我怀疑这就是拥有完整网络应用程序的网站的做法,必须有更好的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-08-04
  • 2012-01-19
  • 1970-01-01
  • 2016-11-13
  • 2023-03-10
  • 1970-01-01
相关资源
最近更新 更多