2010-03-29 2 views
11

Мне нужно использовать кеш для файлов css и js-файла, которые я использовал на сайте. мой сайт работает на общем сервере хостинга. с сервером ничего не может быть сделано.Как установить кеш для файла css/js

так что может быть решением для использования кеша и сжатия для js и css-файлов.

+0

хотят использовать кеширование или не использовать кеширование? – thecoshman

ответ

-1

Вам необходим доступ для сервера для управления http headers, который сервер отображает в браузере.

7

Если вы можете использовать PHP5, используйте Minify ... Он сжимает, обфускает и кэширует ваш HTML/CSS без изменений в исходном коде сценария (JS/CSS).

Если вы не можете использовать PHP5 на сервере, сжимать & запутать файлы с YUI Compressor и кэшировать файлы с помощью .htaccess:

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

Minify - это потрясающая библиотека, я рекомендую ее высоко, я использовал ее на большом веб-приложении и уменьшил мои HTTP-запросы на 25%. –

+0

_Minify_ специально не «обфускает» код. Имена функций и переменных остаются нетронутыми, – MrWhite

38

Если вы используете Apache, то я хотел бы начать здесь.

сжатия и кэширования разные вещи.

Для сжатия, PHP Minify или YUI Compressor отличные. Если все остальное не удается, TextMate имеет хороший набор инструментов Javascript Tools, который позволяет сжать ваш код. Вы можете вручную сжать свой код, затем загрузить его и отменить сжатие, чтобы вернуть источник в читаемое состояние. Я не рекомендую этого, но я сделал это раньше.

Для кэширования читайте сайт 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, затем Firebug, затем YSlow. Запустите тест YSlow, он даст вам знать, работает ли кеширование.