加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 运营中心 > Nginx > 正文

nginx与javascript文件过期(由PHP动态生成)

发布时间:2020-12-13 21:00:05 所属栏目:Nginx 来源:网络整理
导读:我有一个由PHP生成的javascript文件的expires头问题. 该网站有两种类型的JavaScript文件.一部分是静态javascript文件,一部分是由PHP动态生成的. conf没有过期标题 这里没有将过期标题添加到.js文件中(所有文件都返回HTTP 200) location / { try_files $uri $

我有一个由PHP生成的javascript文件的expires头问题.

该网站有两种类型的JavaScript文件.一部分是静态javascript文件,一部分是由PHP动态生成的.

conf没有过期标题

这里没有将过期标题添加到.js文件中(所有文件都返回HTTP 200)

location / {
    try_files  $uri $uri/ /index.php;
}

location ~ .php${
    include  /var/ini/nginx/fastcgi.conf;
    fastcgi_pass  php;
    fastcgi_param  SCRIPT_FILENAME /var/www/index.php;
}

与过期标题conf

为.js文件添加位置时,所有动态生成的文件都会返回HTTP 404

location / {
    try_files  $uri $uri/ /index.php;
}

location ~ .php${
    include  /var/ini/nginx/fastcgi.conf;
    fastcgi_pass  php;
    fastcgi_param  SCRIPT_FILENAME /var/www/dyndev.dk/public/secure/index.php;
}

location ~ .(js|css)${
    expires 1y;
    add_header Cache-Control "public";
}

如何处理带有expires头的静态和动态生成的.js文件?

所有动态生成的javascript文件都命名为* -php.js

文件结构

/var/www/public/index.php # All none-static file requests are pointed to index.php
/var/www/public/js/main.js # Static files
/var/www/js-dynamically_generated.php # This file is outside the public www,but is routed by PHP since the file doesn't exists inside the public /js

PHP路由

www.example.com/ -> index.php
www.example.com/js -> static content
www.example.com/js/dynamically_generated-php.js -> js-dynamically_generated.php
最佳答案
对于nginx,PHP绝不是Javascript. Nginx无法区分呈现html的PHP和呈现javascript的PHP(如果我错了,请纠正我).

因此,要做的就是设置一个单独的文件夹,其中包含生成所有JS的PHP文件(代码未经过测试!):

location ~ normal_php/.php${
    include  /var/ini/nginx/fastcgi.conf;
    fastcgi_pass  php;
    fastcgi_param  SCRIPT_FILENAME /var/www/dyndev.dk/public/secure/index.php;
}

location ~ js_php/.php${
    expires 1y;
    add_header Cache-Control "public";

    include  /var/ini/nginx/fastcgi.conf;
    fastcgi_pass  php;
    fastcgi_param  SCRIPT_FILENAME /var/www/dyndev.dk/public/secure/index.php;
}

…或者使用PHP本身发送标题:

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读