2012-04-19 43 views
0

我在想創建腳本,會做的Javascript一個請求如下:多個JS文件

  1. 獲得從JS目錄中使用服務器上的
  2. 將所有腳本一個所有JavaScript的 - 這將使只一個請求而不是多個
  3. 縮減大小組合腳本
  4. 緩存文件

假設訂單其中需要加載的文件被寫入配置文件的某處。

現在,當我加載myexamplepage.com時,我實際上使用jQuery,主幹,mootools,原型和其他一些庫,但不是向這些多個文件詢問服務器,而是調用myexamplepage.com/js/getjs,我得到的是結合並縮小JS文件。這樣我就消除了對服務器的附加請求。當我在網上閱讀關於加速您的網站時,我發現您對服務器的請求越多,網絡變得越慢。

由於我對編程世界相當陌生,我知道很多事情我認爲已經存在,我不認爲這也是例外。

因此,請列出您所知道的與我所描述的內容完全相同或類似的內容(請注意,每次希望更改腳本時都不需要使用任何類型的縮小器或第三方軟件,原始文件結構,你只能用班級幫手)

PS我認爲同樣的方法也可以用於CSS文件。

我正在使用PHP和Apache。

+1

您使用什麼服務器端技術爲您的網站? – 2012-04-19 12:25:25

+0

可能的重複[你用什麼來最小化和壓縮JavaScript庫?](http://stackoverflow.com/questions/599911/what-do-you-use-to-minimize-and-compress-javascript-libraries) – epascarello 2012-04-19 12:28:22

+0

@Richard Ev - 在當時的PHP,但我正在考慮自己的概念,我想閱讀任何平臺的解決方案,他們的方法是什麼。 – 2012-04-19 12:35:32

回答

2

而不是讓服務器做這個動作,我建議事先做好:只需連接腳本並通過非破壞性的縮小器(如jsminGoogle Closure Compiler)以「簡單」模式運行它們。

這也使您有機會在該文件上放置一個版本號,並給它一個長的緩存壽命,以便用戶不必每次到達頁面時都要重新下載它。例如:假設您的頁面內容頻繁變化,您可以在頁面上設置緩存標題以表明它每天過期。當然,您的JavaScript不會每天都在改變。因此,您的page.html可以包含一個名爲all-my-js-v4.js的文件,它具有較長的緩存壽命(如一年)。如果您更新JavaScript,請創建一個名爲all-my-js-v5.js的新的多功能一體文件,並更新page.html以包含該文件。用戶下次看到page.html時,他們會請求更新的文件;但在那之前,他們可以使用他們的緩存副本。

如果你真的想要這樣做,如果你使用的是Apache,你可以使用mod_pagespeed

+0

我明白你在說什麼,我知道第三方的minfiers和combiners,但是如果我決定向JS文件添加另一行,我需要對所有文件執行相同的操作 - 這需要一些時間,不是嗎? 編輯:我讀了一點關於mod_pagespeed的內容,看起來很有意思,以後我會再談談。但這不會是真正的方法,因爲那需要在服務器上安裝這個mod,我想如果你坐在共享服務器上,你無法實現這一點。 – 2012-04-19 12:38:25

+0

@VytautasButkus:*「需要一些時間,不是嗎?」*沒有任何真正的方式。作爲一個實驗,我通過'jsmin'運行了8M(基本上不相關的)JavaScript文件。花了四分之一秒。 Closure Compiler速度較慢,爲34秒,但這是因爲它做了很多工作(並獲得更好的結果)。而且我猜你的JavaScript少於8M。 (它在6.5秒內完成了jQuery 1.7.2文件。)這是在我的雙核2.4GHz機器上,所以根本不是一個超級充電的怪物。 – 2012-04-19 12:53:36

+0

我不是在談論軟件壓縮文件所花費的時間,而是在談論需要將所有5個或更多文件放入軟件然後上傳這些文件的時間。假設你每天都需要做每日更新。那麼你每週浪費多少時間?假設你可以完全跳過這個過程。 – 2012-04-19 13:12:56

1

如果您使用.NET,我可以推薦Combres。它對JavaScript和CSS文件進行組合和縮小。

0

我知道這是一個老問題,但你可能對這個項目感興趣:https://github.com/OpenNTF/JavascriptAggregator

假設你使用AMD模塊您的JavaScript,該項目將根據需要創建高度緩存層。它還有其他一些你可能感興趣的功能。