JS/CSS 文件未刷新(可能是服务器端)



我正在处理一个javascript文件。在我的前几次编辑中,一切都正常运行,但现在当我进行更改并重新加载页面时,我收到浏览器控制台错误SyntaxError: illegal character,当我检查源代码时,我看到我的文件的旧版本,末尾有一堆 s。

我已经在这个网站上工作了一两个星期,没有问题。但是,前几天我在CSS文件中遇到了与此类似的问题。我想我通过重命名文件、刷新并重新命名它来让它工作。它仍然无法正确刷新,显然这不是进行开发的实用方法。

我的环境

  • 我正在 Windows 7 的 VirtualBox 下开发一个 Centos 7 网站。
  • 我的网站代码位于共享文件夹中。(在 Windows 中,可通过 Centos 访问(。
  • Apache, PHP 7, MariaDB.
  • 错别字3 8.7.3 CMS
  • 我在 Windows 主机文件中定义的本地域中查看我的站点。

我尝试过什么

  • 刷新页面(多次,使用 Ctrl+F5(。
  • 直接查看JS文件。刷新。(在mydomain/typo3conf/ext/myext/Resources/Public/js/file.js(
  • 在文件后添加?somerandomstring.js并刷新。
  • 使用"刷新所有缓存"清除我的 CMS 缓存。
  • 重命名我的 CMS .htaccess 文件。在 Centos 运行/sbin/service httpd restart.刷新 JS 文件。
  • 在其他浏览器中打开JS文件。
  • 重新启动 Centos 并刷新时,我得到了文件的当前版本。但是如果我再次编辑它,那么我会收到同样的错误。
  • 如果我撤消对文件的更改,则它会加载并正常运行。

我认为这排除了它是我的浏览器。我认为重命名.htaccess应该排除它是CMS,但我没有确定的知识。

那么,接下来我该检查什么?

编辑:

还注意到,如果我编辑文件以使其更短,它会将旧文件修剪为新文件的长度。

我的资产(css,js,images等(也有同样的问题。 唯一有效的方法(据我目前所知(是在 url 旁边添加一个随机数,如下所示:/main.js?someRandomNumber.

这会强制浏览器重新加载文件并加载新代码。

要实现这一点,请使用这样的 php:

<script src=<?php echo '"main.js?' . rand() .'"'; ?>></script>

如果您找到更好的方法,请告诉我...

对我来说,这听起来像是您的vbox设置的问题。通常,如果按 ctrl+f5,浏览器将重新加载所有脚本。

将随机查询字符串添加到脚本是一个非常糟糕的主意,因为每次通过 http 访问它时,它都是一个新资源。这应该通过校验和或修改时间来完成(取决于您的部署策略(

以下示例有效,如果您不是每次部署项目时都上传脚本

<script src="path/to/script.js?v=<?= filemtime($file); ?>"><script>

另一种选择是

<script src="path/to/script.js?v=<?= md5_file($file); ?>"></script>

这样,一旦 v 值发生变化,您的浏览器应该将其识别为新资源。

如果您直接通过 http 访问文件(例如使用 curl(并且它返回了错误的文件版本,您将面临独立于 typo3 的问题。我也怀疑这与阿帕奇有关。

我想您必须在虚拟主机实例中安装来宾添加。此外,我会确保正确设置所有权限。

澄清一下:您访问的文件位于何处?如果您从 typo3 访问一些生成/串联的文件(例如 typo3temp/compressor(,这可能是问题所在,这些文件被保存在那里,但它们的来源在其他地方。

最新更新