0

假设我有一个 javascript 或 CSS 文件,它只用于网站上的一个或很少几个页面。我还有一种方法可以轻松识别何时提供这些页面,例如人类可读的 URL。使用服务器端测试有条件地为 JS 提供服务以查看脚本是否必要是不好的做法吗?以 PHP 为例,我可能会这样做:

<?php
if($page='myFancyPage')
{
?>
    <script src="myFancyScipt.js"></script>
<?php
}
?>

我不会失去浏览器缓存的好处吗?我不应该这样做还有其他原因吗?

我认识到随着站点变得越来越大并且必须堆积越来越多的条件,这可能会变得笨拙。但除了这个问题之外,是否有理由避免这种做法?

4

4 回答 4

4

不,因为条件是在服务器而不是客户端上。

客户端不知道它为什么得到文件,但是当它得到它时,它会被缓存。

于 2012-05-15T18:14:57.603 回答
1

浏览器缓存发生在客户端(浏览器),而您的 PHP 将在服务器端执行。如果您的浏览器看到包含myFancyScript.js在其中的页面,那么对该页面的所有后续请求都将使用 的缓存版本myFancyScript.js,假设来自服务器的响应标头允许它并且浏览器服从标头。

于 2012-05-15T18:16:12.000 回答
0

这取决于...

一般来说,建议是尽量减少页面对外部资源的请求数量,因为额外请求/响应的开销通常大于文件源合并到另一个文件源的情况。

这就是为什么标准性能建议是将 JS 文件合并在一起以创建最小下载次数的原因

于 2012-05-18T16:15:47.167 回答
0

您不会失去文件缓存的好处,除非它们被需要并且没有被提供!文件缓存只有在文件没有更改并且已经存在于客户端时才会使您受益。

有选择地链接到您的外部文件(仅链接this页面需要的文件)是有好处的,因为您的文件将加载得更快,因为它不必解析多余的 js/css ...您最好只添加将页面需要

于 2012-05-15T18:16:22.780 回答