如何从可以从脚本包含标记引用的 PHP 文件输出 javascript 文件
How to output a javascript file from a PHP file that can be referenced from a script include tag
我正在 PHP 中寻找一个解决方案,它将允许我引用一个 PHP 文件,该文件输出 javascript 作为脚本包含在我的 header html 页。我想要这样做的原因是因为我有一些动态生成的 javascript 我希望浏览器缓存它。
我之前在 ASP.NET 中使用 .ashx 处理程序完成了此操作,但我不确定如何在 PHP 中完成此操作。
下面是我正在努力实现的目标的更详细的细分。
<!DOCTYPE html>
<html lang="en">
<script type="text/javascript" src="javascriptHandler.php"></script>
<head>
</head>
在上面的示例中,我希望 javascriptHandler.php
在被请求时响应 javascript 文件。
javascriptHandler.php
需要检查传入的请求 headers 并确定文件是否已存在于客户端和 return 适当的响应。
我正在寻找能够执行上述操作的任何干净的解决方案,或者任何能为我指明正确方向的链接。如果有更好的方法来包含和缓存动态生成的 javascript 请在此处 post。
URL 在网络服务器上重写:
这将重写请求的 .js
文件名以读取您的 .php
文件。
这被称为 'Internal' 重写,因此网络浏览器不会知道该文件实际上是 .php
。它会认为这是它请求的 .js
文件。
Apache
如果您使用的是 Apache
网络服务器,您可以在与 javascriptHandler.php
文件相同的目录中创建一个 .htaccess
文件。
在 .htaccess
中,放入以下内容:
RewriteEngine On # Turn on the rewriting engine
RewriteRule javascriptHandler.js$ javascriptHandler.php [PT]
Nginx
您也可以使用 Nginx
网络服务器执行此操作,但您必须在服务器的 /etc/nginx/sites-available/yoursite
配置文件中执行此操作。
我不会讨论 如何 重写 Nginx
,因为它比 Apache
复杂得多。但基本上是这样的:
server{rewrite javascriptHandler.js$ javascriptHandler.php last;}
顺便提一下
进行这些更改后,您将像往常一样调用 HTML 页面中的文件以缓存它:
<script type="text/javascript" src="javascriptHandler.js"></script>
在您的网络服务器上,您将文件另存为 .php
。这将允许您使用 PHP 在文件中构建动态 JavaScript。
/path/to/javascriptHandler.php
将JavaScriptHeaders放入PHP文件
保持 HTML 页面不变。将其称为 .php
文件:
<script type="text/javascript" src="javascriptHandler.php"></script>
在您的 javascriptHandler.php
文件中,将此添加到文件的最顶部:
<?php
header("Content-Type: application/javascript");
header("Cache-Control: max-age=604800, public");
?>
然后你可以把你的常规javascript放在下面。总而言之,它看起来像:
<?php
header("Content-Type: application/javascript");
header("Cache-Control: max-age=604800, public");
?>
function bob(){
alert('hello')
}
bob();
您的浏览器会将您的 javascriptHandler.php
文件视为 JavaScript 资源。正常的缓存规则将适用。
我正在 PHP 中寻找一个解决方案,它将允许我引用一个 PHP 文件,该文件输出 javascript 作为脚本包含在我的 header html 页。我想要这样做的原因是因为我有一些动态生成的 javascript 我希望浏览器缓存它。
我之前在 ASP.NET 中使用 .ashx 处理程序完成了此操作,但我不确定如何在 PHP 中完成此操作。
下面是我正在努力实现的目标的更详细的细分。
<!DOCTYPE html>
<html lang="en">
<script type="text/javascript" src="javascriptHandler.php"></script>
<head>
</head>
在上面的示例中,我希望 javascriptHandler.php
在被请求时响应 javascript 文件。
javascriptHandler.php
需要检查传入的请求 headers 并确定文件是否已存在于客户端和 return 适当的响应。
我正在寻找能够执行上述操作的任何干净的解决方案,或者任何能为我指明正确方向的链接。如果有更好的方法来包含和缓存动态生成的 javascript 请在此处 post。
URL 在网络服务器上重写:
这将重写请求的 .js
文件名以读取您的 .php
文件。
这被称为 'Internal' 重写,因此网络浏览器不会知道该文件实际上是 .php
。它会认为这是它请求的 .js
文件。
Apache
如果您使用的是 Apache
网络服务器,您可以在与 javascriptHandler.php
文件相同的目录中创建一个 .htaccess
文件。
在 .htaccess
中,放入以下内容:
RewriteEngine On # Turn on the rewriting engine
RewriteRule javascriptHandler.js$ javascriptHandler.php [PT]
Nginx
您也可以使用 Nginx
网络服务器执行此操作,但您必须在服务器的 /etc/nginx/sites-available/yoursite
配置文件中执行此操作。
我不会讨论 如何 重写 Nginx
,因为它比 Apache
复杂得多。但基本上是这样的:
server{rewrite javascriptHandler.js$ javascriptHandler.php last;}
顺便提一下
进行这些更改后,您将像往常一样调用 HTML 页面中的文件以缓存它:
<script type="text/javascript" src="javascriptHandler.js"></script>
在您的网络服务器上,您将文件另存为 .php
。这将允许您使用 PHP 在文件中构建动态 JavaScript。
/path/to/javascriptHandler.php
将JavaScriptHeaders放入PHP文件
保持 HTML 页面不变。将其称为 .php
文件:
<script type="text/javascript" src="javascriptHandler.php"></script>
在您的 javascriptHandler.php
文件中,将此添加到文件的最顶部:
<?php
header("Content-Type: application/javascript");
header("Cache-Control: max-age=604800, public");
?>
然后你可以把你的常规javascript放在下面。总而言之,它看起来像:
<?php
header("Content-Type: application/javascript");
header("Cache-Control: max-age=604800, public");
?>
function bob(){
alert('hello')
}
bob();
您的浏览器会将您的 javascriptHandler.php
文件视为 JavaScript 资源。正常的缓存规则将适用。