要减少http请求,是否可以使用php内联css和js? 例如:
<style>
<?php echo require_once("css/style.css"); ?>
</style>
<script>
<?php echo require_once("js/myjs.js"); ?>
</script>
答案 0 :(得分:3)
我将首先回答您问题的后半部分,然后应用上半部分。
&#34; 可以使用php内嵌css和js &#34; - 是的在某些情况下,将CSS和JS添加到文档内部的样式表中是一个好主意。
然而,你的方法可以做很多改进。快速执行此操作的方法是使用file_get_contents
,如下所示:
echo '<style type="text/css">'.file_get_contents('/path-to-your/style.css').'</style>';
我建议抓取文件内容并直接将其添加到文档中的唯一情况是涉及为CMS系统(如Wordpress或Joomla等)编写插件的情况。
有时,您的插件可能只需要使用 5 - 10行CSS和/或JS ,强制您的用户添加另一个是不好的形式样式表给他们的http请求代码很少。在这些情况下,我建议加载内部样式表/脚本。
但是这样做并不是一个好主意&#34; 减少http请求&#34;正如你问的前半部分问的那样。如果您真的想减少http请求,那么您应该认真考虑合并样式表和脚本文件。拥有一些大文件比使用很多小文件更好。
答案 1 :(得分:3)
将JS或CSS等资源打印到文件中以加快加载速度对我来说绝对是不好的做法。现代浏览器最终会在用户点击您的第一页时缓存它们。
根据我的说法,您可以尝试缩小资源文件,以便更快地加载它们并根据需要改进缓存,但不需要它,因为所有现代浏览器现在都处理缓存非常好。
答案 2 :(得分:2)
对我来说这看起来真的很糟糕。另外,我不知道你将如何在这里获得任何性能提升,更像是相反。
你应该更专注于什么时候你真的需要加载你的js和css。缩小它也应该有所帮助。
答案 3 :(得分:0)
这是我要尽快加载CSS并同时利用浏览器缓存的方法:
我为首次访问者检查或设置了cookie;如果是初次访问者,则我加载CSS内联+预取实际链接(请注意,我使用预取,因为现代浏览器广泛支持它而不是预载)。这样,此访问者将在下次访问或下一页访问时从缓存中获取预提取的CSS。
if(isset($_COOKIE['v'])) $CSS='<link href="default.css" rel="stylesheet">';
else {
$CSS='<style>'.file_get_contents('default.css').'</style><link rel="prefetch" href="default.css">';setcookie('v','1',time()+31556926,'/','example.com',1,1);
}