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

前端之家收集整理的这篇文章主要介绍了nginx与javascript文件过期(由PHP动态生成)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

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

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

conf没有过期标题

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

  1. location / {
  2. try_files $uri $uri/ /index.PHP;
  3. }
  4. location ~ \.PHP${
  5. include /var/ini/Nginx/fastcgi.conf;
  6. fastcgi_pass PHP;
  7. fastcgi_param SCRIPT_FILENAME /var/www/index.PHP;
  8. }

与过期标题conf

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

  1. location / {
  2. try_files $uri $uri/ /index.PHP;
  3. }
  4. location ~ \.PHP${
  5. include /var/ini/Nginx/fastcgi.conf;
  6. fastcgi_pass PHP;
  7. fastcgi_param SCRIPT_FILENAME /var/www/dyndev.dk/public/secure/index.PHP;
  8. }
  9. location ~ \.(js|css)${
  10. expires 1y;
  11. add_header Cache-Control "public";
  12. }

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

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

文件结构

  1. /var/www/public/index.PHP # All none-static file requests are pointed to index.PHP
  2. /var/www/public/js/main.js # Static files
  3. /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路由

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

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

  1. location ~ \normal_PHP/.PHP${
  2. include /var/ini/Nginx/fastcgi.conf;
  3. fastcgi_pass PHP;
  4. fastcgi_param SCRIPT_FILENAME /var/www/dyndev.dk/public/secure/index.PHP;
  5. }
  6. location ~ \js_PHP/.PHP${
  7. expires 1y;
  8. add_header Cache-Control "public";
  9. include /var/ini/Nginx/fastcgi.conf;
  10. fastcgi_pass PHP;
  11. fastcgi_param SCRIPT_FILENAME /var/www/dyndev.dk/public/secure/index.PHP;
  12. }

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

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

猜你在找的Nginx相关文章