使用 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 还有很多其他从谷歌弹出来的东西
是的,也许他的问题已通过forcecopy
或appendTimestamp
选项解决,但他需要为此添加更多代码,@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 文件的主要内容,如果未能解决你的问题,请参考以下文章