靜態資源(JS/CSS)存儲在localStorage


一、簡單了解SEO

SEO由英文Search Engine Optimization縮寫而來, 中文意譯為“搜索引擎優化”。SEO是指從自然搜索結果獲得網站流量的技術和過程。

 

搜索引擎不優化的網站分為以下特征:
1、網頁中大量采用圖片或者Flash等富媒體(Rich Media)形式,沒有可以檢索的文本信息,而SEO最基本的就是文章 SEO和圖片 SEO
2、網頁沒有標題,或者標題中沒有包含有效的關鍵詞;
3、網頁正文中有效關鍵詞比較少(最好自然而重點分布,不需要特別的堆砌關鍵詞);
4、網站導航系統讓搜索引擎“看不懂”;
5、大量動態網頁影響搜索引擎檢索;
6、沒有其他被搜索引擎已經收錄的網站提供的鏈接;
7、網站中充斥大量欺騙搜索引擎的垃圾信息,如“過渡頁”、“橋頁”、顏色與背景色相同的文字;
8、網站中缺少原創的內容,完全照搬硬抄別人的內容等。
內部優化,內容為王
1、META標簽優化:例如:TITLE,KEYWORDS,DESCRIPTION等的優化
2、內部鏈接的優化,包括相關性鏈接(Tag標簽),錨文本鏈接,各導航鏈接,及圖片鏈接
3、網站內容更新:每天保持站內的更新(主要是文章的更新等)
外部優化,外鏈為皇
1、外部鏈接類別:博客、論壇、B2B、新聞、分類信息、貼吧、知道、百科、相關信息網等盡量保持鏈接的多樣性。
2、外鏈運營:每天添加一定數量的外部鏈接,使關鍵詞排名穩定提升。
3、外鏈選擇:與一些和你網站相關性比較高,整體質量比較好的網站交換友情鏈接,鞏固穩定關鍵詞排名

 

 

“注”:div+css結構清晰,很容易被搜索引擎搜索到,適合seo優化,降低網頁大小,讓網頁體積變得更小。如果要做SEO,那么CSS必然不能進行LS(localstorage)的本地緩存優化。原因很簡單:要進行SEO,必須直接輸出完整HTML,因此必須讓樣式在頭部以link標簽加載。如果先輸出HTML,后用js從本地緩存讀取樣式再插入,在樣式重置過程中會出現嚴重的阻塞和閃爍問題。

 

二、瀏覽器緩存

對於靜態資源來說,瀏覽器不會緩存html頁面的,所以你每次改完html的頁面的時候,html都是改完立即生效的,不存在什么有緩存導致頁面不對的問題。瀏覽器緩存的東西有圖片、css和js。這些資源將在緩存失效前調用的時候調用瀏覽器的緩存內容。

header中如果expires的時間為-1,那么緩存會立即失效。如果是一個將來時間,那么它將在將來時間失效

header,Cache-Control: no-cache header,這樣瀏覽器就不會緩存靜態資源了,每次取數據的時候都去服務器上重新獲取。

另外一種方式就是讓你的靜態資后綴加上一個版本號<link rel="stylesheet" type="text/css" href="../css/index.css?version=20150815"/>如果這個version有改變的話,下次就會重新獲取這個靜態資源。

不設置這些參數,瀏覽器通過header中Last-Modified控制緩存失效 ,這個是由服務器自動加上的,如果有這個參數,那么瀏覽器每次都會重新計算本地的cache。如果瀏覽器返回一個304(自從上次請求后,請求的網頁未修改過。服務器返回此響應時,不會返回網頁內容),那么瀏覽器就可以使用本地的cache。

三、LS使用
PC上應用價值不大:
  • 兼容性不太好,不支持LS的瀏覽器比例仍然很大
  • 網絡速度快,協商緩存響應快,LS讀取+eval很多時候會比不上304
  • 通常需要SEO,導致css不能緩存,僅緩存js使得整個緩存方案意義進一步減小
  • 瀏覽器本地緩存足夠可靠持久
  • 跨頁面間共享緩存即便有浪費也差別不大
移動端webapp值得一試:
  • 兼容性好
  • 網速慢,LS讀取+eval大多數情況下快於304
  • webapp不需要seo,css也可以緩存,再通過js加載
  • 瀏覽器緩存經常會被清理,LS被清理的幾率低一些

取出localstorage的代碼不一定要eval,eval函數很有可能影響整個js文件的壓縮(出現eval之后不能對變量名進行替換),可以通過一些hack避免這種壓縮問題。

var script = document.createElement('script');
var code = '!function(){' + getCodeFromLocalStorage() + '\n}();';
script.appendChild(document.createTextNode(code));
document.head.appendChild(script);
效率上應該跟eval差不多,真正的性能損耗還是在LS的讀取上
 
這是一種“黑科技”,因為LS本身並不是被設計用來干這件事的。從過往歷史來看,任何黑科技都是短暫且不可靠的,但就在當下,我也想不到什么更好的工程手段來提升移動端webapp的性能,所以,LS+combo的方案可以說是“有總比沒有強”。
一旦有xss漏洞,就會被人利用將惡意代碼注入到LS中,導致即便修復了xss惡意代碼也存在的問題。
 
LS問題還是有的。
1、Safari 處於隱私模式時,LS set 數據會拋異常
2、不同移動端瀏覽器,對單次set數據大小是有區別的,3-5M
3、不同移動端瀏覽器對LS總容量大小是有區別的,5-10M
 
四、增量加載 
MT是手機騰訊網前端團隊開發維護的一個專注於移動端的、帶有增量更新特色的js模塊管理框架
在快速迭代版本過程中,我們有時候只修改了某個js中的 幾行代碼,卻需要用戶下載 整個js文件,這在重視流量的移動端顯得非常浪費,mt獨創的 增強更新算法實現了修改多少代碼就只下載修改代碼的功能,為用戶和公司節省大量流量


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM