2012-05-20 22 views
3

我在Vitrualbox的CentOS VM中運行Zend Server,並且遇到鏈接JS和CSS資源被「緩存」的問題。我說「緩存」是因爲它們並不是真正意義上的緩存,而是當我向JS或CSS文件添加內容時,它們會被破壞並且不會出現更改。相反,該文件附加了一堆壞字符,例如。Zend服務器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服務器(/usr/local/zend/bin/zendctl.sh restart)和Apache(service httpd restart

修復它的唯一方法是重新啓動整個操作系統(reboot)。有趣的是,如果我刪除了更改,它會恢復正常工作。我只能假設在服務器端某處存在某種形式的緩存。

回答

4

事實證明,這是一個Virtualbox共享文件夾問題,而不是唯一與Zend Server相關的問題,但通常是Apache。

的修復來自Shared folder in VirtualBox for 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> 
+1

omg - 謝謝你的這個... –

0

這是因爲您打開了瀏覽器緩存並且文件名保持不變。 這可以通過在腳本上使用md5_file()並將其保存到cookie中來避免,並且在每個請求上檢查cookie是否更改 - 在這種情況下,您將能夠管理前端文件更改時的情況。

+0

我不這樣做。 我試着版本化我的js和css,我也嘗試清除我的瀏覽器緩存,但同樣的事情發生。 –

0

我試過EnableSendfile off的東西,但它不能在我的CentOS虛擬機上使用ZendServer。所以我轉移到我的Ubuntu的虛擬機與Apache安裝手動(沒有ZendServer),它的工作完美。在我看來,這是ZendServer上的問題,至少在ZendServer配置上。