Php “Zend服务器”;“缓存”;JS和CSS文件的格式

Php “Zend服务器”;“缓存”;JS和CSS文件的格式,php,zend-framework,caching,zend-studio,zend-server,Php,Zend Framework,Caching,Zend Studio,Zend Server,我在Vitrualbox上的CentOS虚拟机中运行Zend Server,链接的JS和CSS资产被“缓存”时出现问题。我之所以说“缓存”,是因为它们在真正意义上并没有被缓存,而是当我将内容添加到JS或CSS文件时,它们会被破坏,并且不会出现更改。相反,该文件附加了一堆错误字符,例如 layout.phtml(zend框架模板) $this->headScript()->appendFile('/js/admin/product.js',text/javascript') 这将呈现: <s

我在Vitrualbox上的CentOS虚拟机中运行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>  
如果我从JS或CSS文件中删除内容,结果是一个不完整的文件,而不是如上所述添加的坏字符

我已经关闭了所有形式的Zend缓存,甚至还关闭了Zend Optimizer。我删除了浏览器缓存并尝试了几种浏览器

我已经用ssh连接到服务器并仔细检查了文件,它的格式非常好,包含了更改。我已尝试重新启动Zend服务器(
/usr/local/Zend/bin/zendtl.sh restart
)和Apache(
服务httpd restart


修复此问题的唯一方法是重新启动整个操作系统(
reboot
)。有趣的是,如果我删除这些更改,它将恢复正常工作。我只能假设在服务器端的某个地方发生了某种形式的缓存。

这是因为您打开了浏览器缓存,并且文件名保持不变。 这可以通过在脚本上使用md5_file()并将其保存到cookies中来避免,
并在每次请求时检查cookie是否更改—在这种情况下,当前端文件更改时,您将能够管理案例。

事实证明,这是一个Virtualbox共享文件夹问题,不是一个与Zend Server唯一相关的问题,而是一个与Apache一般相关的问题

修正来自于

启用发送文件关闭
添加到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>

DocumentRoot“/mnt/your/shared/dir”
服务器名默认值
启用发送文件关闭
选项如下符号链接
允许超越所有
命令允许,拒绝
通融

我尝试了关闭
启用sendfile
功能,但在我的Centos虚拟机和ZendServer上无法运行。所以我转移到我的ubuntu虚拟机上,手动安装了apache(没有ZendServer),它工作得非常好。在我看来,这在ZendServer上是一个问题,至少在ZendServer配置上是这样。

我不认为是这样。我尝试过对js和css进行版本控制,也尝试过清除浏览器缓存,但同样的情况也发生了。
<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>