Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/241.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript文件上过期的nginx(由PHP动态生成)_Javascript_Php_Nginx_Expires Header - Fatal编程技术网

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

javascript文件上过期的nginx(由PHP动态生成),javascript,php,nginx,expires-header,Javascript,Php,Nginx,Expires Header,我对PHP生成的javascript文件的expires头有问题 该网站有两种类型的javascript文件。一部分是静态javascript文件,另一部分是由PHP动态生成的 conf不带expires头 这里没有expires头添加到.js文件中(所有文件返回http200) 带有expires头的conf 为.js文件添加位置时,所有动态生成的文件都返回HTTP404 location / { try_files $uri $uri/ /index.php; } locatio

我对PHP生成的javascript文件的
expires
头有问题

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

conf不带expires头 这里没有
expires
头添加到
.js
文件中(所有文件返回
http200

带有expires头的conf 为
.js
文件添加位置时,所有动态生成的文件都返回
HTTP404

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

文件结构 PHP路由
对于nginx,PHP永远不是Javascript。Nginx无法区分呈现html的PHP和呈现javascript的PHP(如果我错了,请纠正我)

因此,方法是要么用PHP文件设置一个单独的文件夹,生成所有JS(代码未经测试!):

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

<?php
header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // 1 hour

如果使用php创建js,为什么不使用php函数添加标题?更新了我的问题,但是如何在.js文件中放置
expires
标题?问题是,当我为.js文件添加位置时,所有动态生成的.js文件都返回
404
。第二个问题是,你是说所有php生成的js文件都应该命名为
dynamic_js.php
,而不是
dynamic_js-php.js
是的,第二个注释。通过构建作业生成资产会更好,因此您有一个生成静态.js文件的PHP脚本。。构建静态文件也是最快的解决方案!:)
/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
www.example.com/ -> index.php
www.example.com/js -> static content
www.example.com/js/dynamically_generated-php.js -> js-dynamically_generated.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
header('Expires: '. gmdate('D, d M Y H:i:s \G\M\T', time() + (60 * 60))); // 1 hour