2010-03-29 112 views
11

我必須使用我在網站中使用的css文件和js文件的緩存。 我的網站在共享託管服務器上運行。服務器無法完成。如何爲css/js文件設置緩存

因此,如何使用緩存和壓縮js和css文件的解決方案。

+0

想要使用緩存還是不使用緩存? – thecoshman 2010-03-29 10:30:31

回答

-1

您確實需要訪問服務器來管理服務器呈現給瀏覽器的http headers

7

如果您可以使用PHP5,請使用Minify ...它將壓縮,混淆和緩存您的HTML/CSS,而無需更改腳本(JS/CSS)源代碼。

如果您不能在您的服務器上使用PHP5,壓縮&使用的.htaccess混淆您的文件與YUI Compressor和緩存文件:

<FilesMatch "\.(css|js)$"> 
Header set Cache-Control "max-age=172800, public, must-revalidate" 
</FilesMatch> 
+0

Minify是一個很棒的庫,我高度推薦它,我在一個大型Web應用程序中使用它,並將我的http請求減少了25%。 – 2010-03-29 13:40:03

+0

_Minify_並不專門「混淆」代碼。函數和變量名稱保持不變, – MrWhite 2015-09-11 23:16:01

38

如果您使用的是Apache,我就從這裏開始。

壓縮和緩存是不同的東西。

對於壓縮,PHP Minify或YUI Compressor都很棒。如果一切都失敗了,TextMate有一個很好的Javascript工具包,允許你壓縮你的代碼。您可以手動壓縮代碼,然後上載它,並撤消壓縮以使源代碼恢復到可讀狀態。我不建議這樣做,但我之前做過。

要進行緩存,請閱讀askapache.com網站。有幾種簡單的方法可以打開mod_expires,mod_compress和其他模塊。由於您在共享主機上,因此主機可能已關閉某些Apache模塊。我使用過GoDaddy,並關閉了mod_expires。有關Apache模塊的主機特定信息,請參閱主機支持文檔。

如果你運氣好的話,重要的是上,您可以:

<IfModule mod_deflate.c> 
    SetOutputFilter DEFLATE 
    SetEnvIfNoCase Request_URI \ 
    \.(?:gif|jpe?g|png)$ no-gzip dont-vary 
</IfModule> 

<IfModule mod_expires.c> 
    ExpiresActive on 
    ExpiresByType image/jpg "access 2 month" 
    ExpiresByType image/gif "access 2 month" 
    ExpiresByType image/jpeg "access 2 month" 
    ExpiresByType image/png "access 2 month" 
    ExpiresByType text/css "access 2 month" 
    ExpiresByType application/x-javascript "access plus 2 month" 
    ExpiresByType text/javascript "access plus 2 month" 
    ExpiresByType application/javascript "access plus 2 month" 
    ExpiresByType image/x-icon "access plus 12 month" 
    ExpiresByType image/icon "access plus 12 month" 
    ExpiresByType application/x-ico "access plus 12 month" 
    ExpiresByType application/ico "access plus 12 month" 
</IfModule>` 

將這個代碼在.htaccess文件,打開Firefox,然後螢火蟲,然後YSlow的。運行YSlow測試,它會讓你知道緩存是否正常工作。