我正在处理一个javascript文件。在我的前几次编辑中,一切都正常运行,但现在当我进行更改并重新加载页面时,我收到浏览器控制台错误SyntaxError: illegal character
,当我检查源代码时,我看到我的文件的旧版本最后一串.s。
我一直在这个网站上工作一两个星期没有问题。但是,前几天我用CSS文件遇到了类似的问题。我想我通过重命名文件,刷新并命名它来实现它。它仍然无法正常刷新,显然这不是一种实用的开发方式。
我的环境
我尝试过什么
?somerandomstring
并刷新。/sbin/service httpd restart
。刷新JS文件。我认为这排除了它是我的浏览器。我认为重命名.htaccess 应该排除它是CMS,但我没有足够的知识来确定它。
那么,我接下来要检查什么?
修改
另外注意到,如果我编辑我的文件使其缩短,它会将旧文件修剪为新文件的长度。
答案 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),可能是问题,那些文件被保存在那里,但它们的源是在其他地方。