Zend Server 对 JS 和 CSS 文件的缓存

3
I'm running Zend Server在Vitrualbox的CentOS VM中,我遇到了关于链接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。我已经删除了浏览器缓存并尝试了几个浏览器。
我已经通过ssh登录到服务器并且双重检查该文件,它格式完美并包含更改。我尝试重新启动Zend Server(/usr/local/zend/bin/zendctl.sh restart)和Apache(service httpd restart)
唯一的解决方法是重新启动整个操作系统(reboot)。有趣的是,如果我删除更改,它会恢复正常工作。我只能假设在服务器端发生了某种形式的缓存。
3个回答

4
原来这是Virtualbox共享文件夹的问题,而不是只与Zend Server相关的问题,但是与Apache有关。
解决方法来自于VirtualBox中Apache共享文件夹
在您的虚拟主机文件中添加EnableSendfile off即可。
<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>

0

我尝试了EnableSendfile off的方法,但在我的Centos虚拟机上与ZendServer一起使用时无效。所以我转而使用手动安装(没有ZendServer)Apache的Ubuntu虚拟机,它完美地工作了。在我看来,这是一个ZendServer的问题,至少是ZendServer配置的问题。


0

这是因为您的浏览器缓存已打开,文件名保持不变。 可以通过在脚本中使用md5_file()并将其保存到cookie来避免这种情况, 并在每个请求中检查cookie是否更改-这样,您将能够管理前端文件更改的情况。


我不认为这是问题所在。我已经尝试过对我的JS和CSS进行版本控制,也尝试过清除浏览器缓存,但仍然出现相同的情况。 - Josh Stuart

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接