【问题标题】:JS/CSS files not refreshing (probably server side)JS/CSS 文件不刷新(可能是服务器端)
【发布时间】:2017-12-12 00:57:03
【问题描述】:

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

我已经在这个网站上工作了一两个星期,没有任何问题。但是,前几天我在 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,但我无法确定这一点。

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

编辑:

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

【问题讨论】:

    标签: apache typo3 virtualbox centos7


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 这不是我的问题。我尝试直接重新加载文件并将?randomwhatever 添加到网址的末尾。我仍然得到同样错误的文件。
    • 然后尝试备份您的网站,然后删除原始网站。删除后重启服务器服务,重新上传网站。
    • 如果我重新启动服务器操作系统,它会加载新版本。但是一旦我再次编辑文件,它就会出现同样的问题。
    • 我不是服务器管理员,所以我不知道您的服务器发生了什么。您是否尝试过重新安装整个服务器?这可能会有所帮助。
    【解决方案2】:

    对我来说,这听起来像是您的 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有关。

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

    澄清一下:您访问的文件在哪里?如果您从typo3(例如typo3temp/compressor)访问一些生成/连接的文件,则可能是问题所在,这些文件保存在那里,但它们的来源在其他地方。

    【讨论】:

      猜你喜欢
      • 2013-12-05
      • 2020-01-23
      • 2011-01-25
      • 2016-09-16
      • 1970-01-01
      • 2021-04-20
      • 1970-01-01
      • 2023-02-22
      • 1970-01-01
      相关资源
      最近更新 更多