首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何为不在我的服务器上的脚本添加Expire头?

如何为不在我的服务器上的脚本添加Expire头?
EN

Stack Overflow用户
提问于 2009-09-17 13:55:43
回答 9查看 52.3K关注 0票数 20

我有一个网站,我在所有页面/图像和脚本上添加了Expire头,但我不知道如何将Expire头添加到外部脚本。

例如,Google Analytics -它将过期标题设置为1天。

Google不是我的问题,来自外部网站的一些其他脚本才是真正的问题,它们根本没有Expire头。

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2009-09-17 14:03:26

您只能在对发往您自己的服务器的请求的响应中添加标头字段。如果请求到达另一个服务器,比如Google的服务器,那么应答请求的就是Google的服务器。

因此,您的问题的唯一解决方案是在您自己的服务器上托管外部资源。但是,只有当资源是静态的,不要在请求之间改变,并且不依赖于其他东西时,这才是可能的。

票数 22
EN

Stack Overflow用户

发布于 2009-09-17 14:08:54

唯一的方法是创建脚本,从外部网站下载内容,然后添加所需的标题。

代码语言:javascript
复制
<script type="text/javascript" src="http://external.example.com/foo.js"></script>

代码语言:javascript
复制
<script type="text/javascript" src="external.php?url=http://external.example.com/foo.js"></script>

而external.php则类似于

代码语言:javascript
复制
<?php
header("Expire-stuff: something");
echo file_get_contents($_GET['url']);

当然,这有安全漏洞,所以我建议使用像external.php?file=foo.js这样的标识符串,然后使用

代码语言:javascript
复制
$files = array('foo.js' => 'http://external/...');
if(isset($files[$_GET['file']]))
{
  echo file_get_contents($files[$_GET['file']]);
}

当然,file_get_contents()会占用你的一些带宽,所以建议你也缓存结果。

票数 21
EN

Stack Overflow用户

发布于 2009-09-17 14:05:37

这不可能。

不推荐(并不总是可能的):如果它是静态内容,使用脚本预取并设置您自己的头文件。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1439042

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档