如何为本地调试禁用 Symfony 5 class 缓存?
How can I disable Symfony 5 class cache for local debugging?
我正在开发自定义 json api(不涉及树枝)。在开发过程中,我需要不断地对代码库进行更改,并且每个响应都会缓存几分钟或直到我清除 symfony 缓存。
我正在使用本地 nginx 服务器,应该正确配置它,因为这些是 headers 我得到:
Server: nginx/1.16.1
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/7.4.1
Cache-Control: max-age=0, private
Date: Fri, 24 Jul 2020 07:29:28 GMT
X-Debug-Token: f38aeb
X-Debug-Token-Link: http://localhost:8080/_profiler/f38aeb
X-Robots-Tag: noindex
Last-Modified: Friday, 24-Jul-2020 07:29:28 UTC
Cache-Control: private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0
一旦我运行bin/consolec:c
,回复就会正确更新
每次更改 class(控制器、服务、模型等)时,我都需要这样做。
一定是我遗漏了什么明显的东西。有没有办法在我的开发环境中禁用 class 缓存,而不必为每个小更改清除缓存?
已编辑:添加相关配置。
这是我的 nginx .conf 文件:
server {
listen 80;
server_name ~.*;
location / {
root /app;
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
client_max_body_size 50m;
fastcgi_pass php:9000;
fastcgi_read_timeout 1800;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /app/public/index.php;
# Disable cache
add_header Last-Modified $date_gmt;
add_header Cache-Control 'private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
expires off;
etag off;
}
error_log /dev/stderr debug;
access_log /dev/stdout;
}
终于找到罪魁祸首了。我会留下这个以防有人遇到同样的问题。我在我的开发环境中启用了 opcache,因此它与 symfony 或 nginx 位置无关。我刚刚禁用了 opcache,问题已解决。
opcache.enable=0
我正在开发自定义 json api(不涉及树枝)。在开发过程中,我需要不断地对代码库进行更改,并且每个响应都会缓存几分钟或直到我清除 symfony 缓存。
我正在使用本地 nginx 服务器,应该正确配置它,因为这些是 headers 我得到:
Server: nginx/1.16.1
Content-Type: application/json
Transfer-Encoding: chunked
Connection: keep-alive
X-Powered-By: PHP/7.4.1
Cache-Control: max-age=0, private
Date: Fri, 24 Jul 2020 07:29:28 GMT
X-Debug-Token: f38aeb
X-Debug-Token-Link: http://localhost:8080/_profiler/f38aeb
X-Robots-Tag: noindex
Last-Modified: Friday, 24-Jul-2020 07:29:28 UTC
Cache-Control: private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0
一旦我运行bin/consolec:c
,回复就会正确更新每次更改 class(控制器、服务、模型等)时,我都需要这样做。
一定是我遗漏了什么明显的东西。有没有办法在我的开发环境中禁用 class 缓存,而不必为每个小更改清除缓存?
已编辑:添加相关配置。
这是我的 nginx .conf 文件:
server {
listen 80;
server_name ~.*;
location / {
root /app;
try_files $uri /index.php$is_args$args;
}
location ~ ^/index\.php(/|$) {
client_max_body_size 50m;
fastcgi_pass php:9000;
fastcgi_read_timeout 1800;
fastcgi_buffers 16 16k;
fastcgi_buffer_size 32k;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME /app/public/index.php;
# Disable cache
add_header Last-Modified $date_gmt;
add_header Cache-Control 'private no-store, no-cache, must-revalidate, proxy-revalidate, max-age=0';
expires off;
etag off;
}
error_log /dev/stderr debug;
access_log /dev/stdout;
}
终于找到罪魁祸首了。我会留下这个以防有人遇到同样的问题。我在我的开发环境中启用了 opcache,因此它与 symfony 或 nginx 位置无关。我刚刚禁用了 opcache,问题已解决。
opcache.enable=0