使用 php,JS 强制浏览器在页面加载时使用最新的 JS 和 CSS 文件

Posted

技术标签:

【中文标题】使用 php,JS 强制浏览器在页面加载时使用最新的 JS 和 CSS 文件【英文标题】:Force the browser to use the latest JS and CSS file on page load using php,JS 【发布时间】:2018-12-22 14:43:45 【问题描述】:

我已经使用自定义 php 和 YII2 开发了一些网站。每当我修改任何 JS 或 CSS 文件时,它都不会对我的网页产生任何影响。要应用我的代码的最新版本,我必须按 ctrl+f5 来刷新它。

我已经经历了几个答案,但没有效果。 我检查了以下链接: Force browser to refresh css, javascript, etcHow can I force clients to refresh JavaScript files?

请帮我解决这个问题。

【问题讨论】:

这个问题更多是关于Yii2 asset manager,而不是上面提到的完全依赖于浏览器设置的重复项@RiggsFolly @MuhammadOmerAslam 好的,我已经重新提出了这个问题。都给你答案 @MuhammadOmerAslam 虽然在这种情况下this may be an obvious duplicateAlsong 还有很多其他从谷歌弹出来的东西 是的,也许他的问题已通过forcecopyappendTimestamp 选项解决,但他需要为此添加更多代码,@SuparnaDey 请添加您用于加载资产的Assetmanager 文件还为您的应用添加config 文件,如果是基本应用,则可以是config/web.php,如果是高级应用,则可以是config/main.php 【参考方案1】:

您可以通过将AssetManager::$appendTimestamp 设置为true 来实现此目的。在您的网络配置中:

'assetManager' => [
    'appendTimestamp' => true,
]

是否将时间戳附加到每个已发布资产的 URL。如果这是真的,已发布资产的 URL 可能类似于 /path/to/asset?v=timestamp,其中 timestamp 是已发布资产文件的最后修改时间。当您为资产启用 HTTP 缓存时,您通常希望将此属性设置为 true,因为它允许您在资产更新时破坏缓存。

【讨论】:

:我正要写它,但问题是如果assetManager 使用$sourcePath 表示外部网络,那么他必须使用forceCopy 如果Ctrl + F5 解决了这个问题,那么问题只是在浏览器缓存中。 appendTimestamp 应该可以解决。

以上是关于使用 php,JS 强制浏览器在页面加载时使用最新的 JS 和 CSS 文件的主要内容,如果未能解决你的问题,请参考以下文章

强制浏览器重新加载 index.htm

使用 Framework7 强制重新加载页面

单击 Safari 上的后退按钮时使用 React 挂钩强制页面重新加载

jQuery Mobile 应用强制浏览器忽略缓存页面

强制浏览器每次重新加载小程序

js刷新当前页面的5种方式