Nginx + Laravel5 开发 页面缓存问题缓存问题。

来源:互联网 发布:网站源码加密授权中心 编辑:程序博客网 时间:2024/05/22 16:00

https://segmentfault.com/q/1010000003056268


问题描述:

-------------------------------------------------------------

大家好,我又来提问了。

我的问题是页面缓存。
情况如下:

  1. 我的环境是Linux Mint+LNMP1.2一键部署包
  2. 我每次在本地修改过文件,总需要得1分钟的时间在刷新页面才会生效。
  3. 又或者我每次在终端输入sudo lnmp restart在刷新就生效了(这不是傻么,都重启了……)

那么问题来啦,

请问如何关闭这个缓存问题??
每次本地开发好麻烦,
贴出我的vhost.conf

server
{ listen 80; #listen [::]:80; server_name x.x ; index index.html index.htm index.php default.html default.htm default.php; root /home/millyn/www/x.x/public; include other.conf; #error_page 404 /404.html; location / { try_files $uri $uri/ /index.php?$query_string; } location ~ [^/]\.php(/|$) { # comment try_files $uri =404; to enable pathinfo #try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; fastcgi_index index.php; include fastcgi.conf; #include pathinfo.conf; add_header Cache-Control 'no-store'; } # location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ # { # expires 30d; # } # location ~ .*\.(js|css)?$ # { # expires 12h; # } access_log /home/wwwlogs/x.x.log access; }

以下是我的nginx.conf

user  www www;
worker_processes auto;error_log /home/wwwlogs/nginx_error.log info;pid /usr/local/nginx/logs/nginx.pid;#Specifies the value for maximum file descriptors that can be opened by this process.worker_rlimit_nofile 51200;events { use epoll; worker_connections 51200; multi_accept on; }http { include mime.types; default_type application/octet-stream; server_names_hash_bucket_size 128; client_header_buffer_size 32k; large_client_header_buffers 4 32k; client_max_body_size 50m; sendfile on; tcp_nopush on; keepalive_timeout 60; tcp_nodelay on; fastcgi_connect_timeout 300; fastcgi_send_timeout 300; fastcgi_read_timeout 300; fastcgi_buffer_size 64k; fastcgi_buffers 4 64k; fastcgi_busy_buffers_size 128k; fastcgi_temp_file_write_size 256k; gzip on; gzip_min_length 1k; gzip_buffers 4 16k; gzip_http_version 1.1; gzip_comp_level 2; gzip_types text/plain application/javascript application/x-javascript text/javascript text/css application/xml application/xml+rss; gzip_vary on; gzip_proxied expired no-cache no-store private auth; gzip_disable "MSIE [1-6]\."; #limit_conn_zone $binary_remote_addr zone=perip:10m; ##If enable limit_conn_zone,add "limit_conn perip 10;" to server section. server_tokens off; #log format log_format access '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" $http_x_forwarded_for'; access_log off;server { listen 80 default_server; #listen [::]:80 default_server ipv6only=on; server_name www.lnmp.org; index index.html index.htm index.php; root /home/wwwroot/default; #error_page 404 /404.html; include enable-php.conf; location /nginx_status { stub_status on; access_log off; } location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; } location ~ .*\.(js|css)?$ { expires 12h; } location ~ /\. { deny all; } access_log /home/wwwlogs/access.log access; }include vhost/*.conf;}

感谢各位回答我的问题。。谢过……


回答:

--------------------------------------------

看情况应该是PHP的ZendOpcache缓存,可以修改php.ini配置:

opcache.revalidate_freq=60 官方建议设为60秒.

表示60秒后脚本再次被访问时会检测PHP文件的时间戳,有改变则更新opcode缓存.
可以设为0,这样每次访问都会检测文件时间戳,修改就能在访问时生效了.

或者关闭ZendOpcache:
opcache.enable=0

或者把项目所在目录加入黑名单不缓存:
opcache.blacklist_filename=/png/www/example.com/blacklist
blacklist内容,比如:
/png/www/example.com/public_html/

  • 2015年08月06日更新
  • 1 评论
  • 编辑

0

修改了什么文件呢?模板文件会自动更新缓存,静态资源文件可能是浏览器缓存,强制刷新试试。

  • 2015年08月06日回答
  • 评论
  • 编辑
0
vim /usr/local/php/etc/php.ini下面全部注释掉;opcache[Zend Opcache];zend_extension=opcache.so;opcache.memory_consumption=128;opcache.interned_strings_buffer=8;opcache.max_accelerated_files=4000;opcache.revalidate_freq=60;opcache.fast_shutdown=1;opcache.enable_cli=1;opcache end;xcache;xcache end
  • 2015年08月06日回答
  • 评论
  • 编辑
0

修改的前端还是后端。
如果是前端文件,可以检查下浏览器的设置,是否Disable Cache了

  • 2015年08月07日更新
  • 评论
  • 编辑
0

二楼的正解,一般开发环境也不需要开启opcache

  • 2015年08月07日回答
  • 评论
  • 编辑
0

开发环境建议关闭Opcache。生产环境比较适用。

  • 2016年03月09日回答
  • 评论
  • 编辑


原创粉丝点击