我在Vitrualbox上的CentOS VM中运行Zend Server,我遇到链接JS和CSS资产被“缓存”的问题。我说“缓存”是因为它们不是真正意义上的缓存,而是当我向JS或CSS文件添加内容时,它们会被破坏并且不会出现更改。相反,该文件附加了一堆坏字符,例如。
layout.phtml(zend框架模板)
$this->headScript()->appendFile ('/js/admin/product.js', 'text/javascript' )
;
这会呈现:
<script type="text/javascript" src="/js/admin/product.js"></script>
products.js
//re-add scrolling handles
scrollThumbs.reSortThumbs(ul);
product.moveFileInput(ul);
};
};��������������������������������������������������
如果我从JS或CSS文件中删除内容,结果是一个不完整的文件,而不是如上所述添加的错误字符。
我已经关闭了所有形式的Zend缓存,甚至关闭了Zend Optimizer。我删除了浏览器缓存并尝试了几种浏览器。
我已经进入服务器并仔细检查了文件,并且格式完美且包含更改。我已经尝试重新启动Zend Server(/usr/local/zend/bin/zendctl.sh restart
)和Apache(service httpd restart
)
解决此问题的唯一方法是重新启动整个操作系统(reboot
)。有趣的是,如果我删除更改,它将恢复正常工作。我只能假设在服务器端某处发生了某种形式的缓存。
答案 0 :(得分:4)
事实证明,它是一个Virtualbox共享文件夹问题,而不是与Zend Server唯一相关的问题,而是一般的Apache。
修复来自Shared folder in VirtualBox for Apache
将EnableSendfile off
添加到您的vhost文件,例如
<VirtualHost *:80>
DocumentRoot "/mnt/your/shared/dir"
ServerName Default
<Directory "/mnt/your/shared/dir/public">
EnableSendfile off
Options FollowSymLinks
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
答案 1 :(得分:0)
这是因为您打开了浏览器缓存并且文件名保持不变。 这可以通过在脚本上使用md5_file()并将其保存到cookie来避免, 并在每个请求上检查cookie是否已更改 - 在这种情况下,您将能够在更改前端文件时管理案例。
答案 2 :(得分:0)
我尝试了EnableSendfile off
,但它在ZendServer的Centos虚拟机上无效。所以我移动到我的ubuntu虚拟机,手动安装了apache(没有ZendServer),它运行得很好。在我看来,这是ZendServer上的一个问题,至少在ZendServer配置上是这样。