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

时间:2017-07-07 16:26:20

标签: apache typo3 virtualbox centos7

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

我一直在这个网站上工作一两个星期没有问题。但是,前几天我用CSS文件遇到了类似的问题。我想我通过重命名文件,刷新并命名它来实现它。它仍然无法正常刷新,显然这不是一种实用的开发方式。

我的环境

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

我尝试过什么

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

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

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

修改

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

2 个答案:

答案 0 :(得分:0)

我的资产(css,js,图像等)也存在同样的问题。 唯一有效的(就我目前所知)是在网址旁边添加一个随机数,如下所示:/main.js?someRandomNumber

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

要实现这一点,请使用以下php:

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

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

答案 1 :(得分:0)

对我而言,这听起来像是你的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不同的问题。我也怀疑它与apache有关。

我猜你必须在虚拟主机实例中安装guestaddition。此外,我会确保所有权限都设置正确。

澄清:您访问的文件位于何处?如果你从typo3访问一些生成/连接文件(例如typo3temp / compress),可能是问题,那些文件被保存在那里,但它们的源是在其他地方。