在Nginx和PHP中设置缓存可以提高网站的性能。以下是一些建议来配置Nginx和PHP缓存:
在Nginx中,可以通过配置proxy_cache
指令来启用缓存。首先,确保已经安装了Nginx的ngx_http_cache_module
模块。
编辑Nginx的配置文件(通常位于/etc/nginx/nginx.conf
或/etc/nginx/sites-available/default
),在location
块中添加以下内容:
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires 30d;
add_header Cache-Control "public, no-transform";
}
这将缓存静态文件(如图片、CSS和JavaScript文件),使其在30天内有效。expires
指令用于设置缓存过期时间,add_header
指令用于添加自定义的缓存控制头。
如果需要为不同的文件类型设置不同的缓存策略,可以使用if
指令和map
模块。例如:
http {
map $request_uri $cache_control {
default "public, max-age=86400";
~\.(jpg|jpeg|png|gif|ico|css|js)$ "public, no-transform";
}
...
server {
...
location ~* \.(jpg|jpeg|png|gif|ico|css|js)$ {
expires $cache_control;
add_header Cache-Control $cache_control;
}
...
}
}
这将缓存所有文件类型,但具有不同的缓存策略。
在PHP中,可以使用OPcache、Memcached或Redis等扩展来实现缓存。以下是使用OPcache的示例:
首先,确保已经安装了PHP的OPcache扩展。然后,编辑php.ini
文件(通常位于/etc/php/7.x/cli/php.ini
或/etc/php/7.x/apache2/php.ini
),启用并配置OPcache:
zend_extension=opcache.so
opcache.enable=1
opcache.memory_consumption=128
opcache.max_accelerated_files=4000
opcache.revalidate_freq=60
opcache.validate_timestamps=0
这将启用OPcache,并设置一些基本参数,如内存消耗、最大加速文件数和验证频率。
如果需要使用Memcached或Redis作为缓存后端,可以安装相应的PHP扩展(php-memcached
或php-redis
),然后在php.ini
文件中配置缓存后端:
extension=memcached.so
memcached.enable=1
memcached.host=127.0.0.1
memcached.port=11211
# 或者
extension=redis.so
redis.enable=1
redis.host=127.0.0.1
redis.port=6379
这将配置PHP使用Memcached或Redis作为缓存后端。
总之,要设置Nginx和PHP缓存,需要根据实际需求选择合适的缓存策略和技术,并在Nginx和PHP的配置文件中进行相应的设置。