将所有JS/CSS存储在PHP中


Storing all JS/CSS in PHP?

背景:我正在制作一个单页web应用程序,通过AJAX加载所有内容,所以几天前开始学习php。我立即想到将所有内容(html, css, javascript)放在php文件中,这样就只有一个html文件和一个精灵请求。例如,外部javascript可以存储在:

main.js.php(仅为组织目的添加.js),看起来像:

<script>
 ...
</script>

<style>
 ...
</style>

问题:是否将所有内容存储在php中是一个坏主意?我有强迫症,喜欢在单独的文件中有相关的功能(实际上,文件夹也是),所以让我们说我的项目使用100+包含。这些只在用户访问(AJAX站点)时加载一次。我想将Http请求的数量减少到1个html和1个sprite(我的应用程序实际上使用自定义字体的图像)。我的应用程序也将在移动设备上运行(使用不同的设计,使用更少的包含,但使用类似的方法)。

Research:以下是我所知道的:

  • 你可以让Apache处理js/css作为php,但不是我感兴趣的东西(危险)-链接
  • 这个网站给了我一个想法,虽然我不太理解它- 3种方法压缩CSS
  • 缓存像APC(不确定它是如何工作的,但超出了这个问题的范围)将提高php的速度(?)

虽然减少HTTP请求的数量是一件好事,但它也有问题。如果将CSS和Javascript合并到HTML文件中,则会增加页面大小。你也可以让浏览器不可能缓存CSS和Javascript文件,所以这些资源会被一次又一次地重新下载,而不是一次。

同时,静态文件比通过PHP提供服务要快得多。PHP

然而,结合所有图像是一个好主意。这是Google使用的:http://www.google.co.uk/images/nav_logo91.png 总的来说,我说不用麻烦了。保持CSS和Javascript的分离,尽可能合并图像,当然,如果可以的话,一定要使用APC。记住,不要过早地优化你的网站。先把内容放进去,开发功能等等。让你的网站更快可能会以降低可维护性为代价——我从经验中知道这一点。

注意事项:

1。code - text ratio:

你的内容页被谷歌读取。当Google对你的网页进行排名时,其中一个参数是代码与文本内容的比例。如果你把你的css/js代码和内容放在一起,你就降低了比例。(顺便说一句,使用div而不是表格的一个论点是,表格通常会占用更多的HTML代码和更低的比例)。

编辑:这是一个理论,而不是真正已知的事实。重要的是,HTML代码在语法上是正确的,这样搜索引擎解析器就更容易解析它。有人说Google会忽略前100kb之后的内容,所以这也是一个值得考虑的问题。

2。nginX

我安装了nginx和apache作为反向代理来处理php。

nginx是一个HTTP服务器,它知道如何处理静态页面。Apache的设计是每个客户端线程,而nginx使用反应器模式,这意味着- nginx可以处理比Apache更多的流量作为一个web服务器(大约50倍的请求数)。

缺点是nginx不处理PHP请求,因为apache也安装了- nginx将把所有PHP调用发送给apache,所以它会处理它们并将响应返回给nginx,然后返回给客户端。

如果在这种设置中(这是很常见的)你将css/js文件放在javascript下,你将失去nginx的优势,它不是自己处理静态js/css文件,而是将它们发送给apache,因为它会将它们作为PHP页面寻址。

3。缓存

缓存文件是最常见的机制之一,以提高您的网站性能,同时减少流量。如果您将静态内容与动态内容混合,您将失去缓存静态文件所获得的优势。

在web环境中工作时,最好(作为一种习惯)将尽可能多的静态内容与动态内容分开。当缓存静态数据时,这会给你最好的结果。

当然,没有规则规定什么应该做什么不应该做。我有很多动态的js内容,但主要功能通常被提取到静态文件。

4。CSS精灵

css精灵(正如@Muu提到的)是对性能的巨大改进,绝对应该采用。

另一个建议更具体到您的情况-如果您希望您的内容正确索引-因为您提到大多数数据将使用ajax加载,我建议它也没有ajax。例如:www.domain.com/将有一个到#contact的链接,它将显示表单(使用ajax加载)。您还应该有www.domain.com/contact用于索引。还要确保如果用户输入www.domain.com/#contact -他将被重定向到联系页面(或内容将被动态加载)。

使用浏览器的web开发工具来查看正在发出的请求,看看你可以在哪里减少请求的数量,还要注意文件大小,看看哪些文件被缓存,哪些文件被服务器请求。在服务器配置和htaccess中定义缓存属性。

希望有帮助;)

PS:另一个提示-如果你的键盘上溅满了水-不要试图用吹风机吹干它-它会融化你的键盘…

我会让CSS和JS远离PHP,除非它是动态生成的。静态页面通常更快,更容易由web服务器提供服务。保持文件的分离也允许客户端浏览器缓存一些重复使用的数据(例如CSS文件)。

但是,请确保对单个文件使用压缩。Google "Page Speed"文档中的一些有用链接。

此外,字节码缓存肯定会提高速度。不需要每次都编译