⑴ 用的是七牛雲,當出現多個js載入慢的問題要怎麼解決
建議你觀察下頁面內資源的載入時間,同時在頁面中打開多個js文件主要耗時為TTFB,主要耗時為「等待某個js載入渲染完成」+「等待dns解析時間」+「瀏覽器的pending策略」等。你在頁面內同步載入了多個js資源,所以下載速度的不可控是正常的。
因為JS在執行的時候會影響到頁面的DOM和樣式等情況。瀏覽器在解析渲染HTML的時候,如果解析到需要下載文件的script標簽,那麼會停止解析接下來的HTML,然後下載外鏈JS文件並執行。減少 JavaScript 對性能的影響有以下幾種方法:1、將所有的
⑵ 七牛雲存儲怎麼布署到伺服器
"在網路覆蓋的范圍內手機、平板、電腦可以隨時的實現文件同步
"部門之間可以安全的文件分享
"所有人對文件的操作行為均可以被記錄
"登錄身份認證機制與企業現有管理機制相結合
"存放於數據中心的文件具備高強度的加密
正是從這種需求出發,推動了廠商對企業私有雲存儲的技術研發,目前市場上已經有部分成熟的產品方案得到應用,筆者剛剛拿到VEsystem 推出的VECloud 2.0最新版,目前正在測試中;在此謹以VECloud 2.0(和信雲存儲)為例,向大家講解企業私有雲存儲的快捷部署方法,供企業信息管理人員在方案選擇時參考所有。
抽象來看與網路雲網盤一樣,部署好的私有雲存儲是一個可以通過瀏覽器輸入網址或IP地址直接訪問的網站。那麼除伺服器基礎平台的建設之後,我們需要就是搭建一套Web Server 的發布平台,最常見的WEB發布平台應該是IIS(微軟伺服器版系統中自身提供) 、以及Apache ,根據不同網站開發語言的需要還需要配置腳本解釋與資料庫支持;比如大家經常提到的ASP + msSQL 、PHP + mySQL 等;
2
VECloud 2.0 對WEB平台要求是:PHP 5.10 / mySQL 5.5
以往在Windows平台手工搭建AMP環境(Apache MySQL PHP)是比較復雜的,幸好現在已經有相應的一鍵式集成包,可以幫助我們快速完成這項工作。筆者比較習慣使用的是EasyPHP,本次部署所採用的版本是12.0 ;EasyPHP 安裝非常簡單幾乎你只用點下一步即可以完成(對AMP 環境的搭建比較熟的朋友可以越過章節)。
安裝結束後會自動打開默認瀏覽器呈現當前AMP配置運行信息,如上圖我們可以看到APACHE 2.42 / MYSQL 5.5.2 / PHP 5.4.4 即已經有運行中,有關EasyPHP 12.0 的詳細調試使用可以參考官方教程或相關文章,作為服務運行的支撐平台,其不屬於雲存儲的技術討論范圍後面的章節中不再重復提及。
接下來我將VECloud2.0 的WEB站點的發布包,解壓到WWW 目錄中,然後通過瀏覽器訪問本機IP 如127.0.0.1??即可以打開這個站點;站點首次被打開時會有一個安裝向導完成初始的部署工作。如下圖:
點擊"現在就開始"…
接下來的頁面中會顯示出當前WEB伺服器的環境配置信息,以及和信雲存儲對環境基本要求自檢結果,為了保障功能的全面正常執行,建議按照提示信息的要求,調整伺服器的配置信息以達到推薦標准,如下圖:
在默認情況下 PHP 擴展中的PHP_EXIF 、PHP_GETTEXT 、PHP_LDAP 、PHP_OPENSSL 並未消開啟,最大文件限制默認為2M ,這里會建議我們開啟上述擴展並調大文件限制。
這都可以通過修改PHP.INI 配置文件來實現,PHP.INI 文件默認存放在apache 目錄中,可以用記事本打開
可以通過查找方式找到PHP_EXIF 、PHP_GETTEXT 、PHP_LDAP 、PHP_OPENSSL 這幾項PHPExt 所在位置,注意行前一個" ; "(分號),分號表示此行被注釋,只需要將分號去掉即可,(如上圖)如果是手工搭建的AMP 環境需要確定對應DLL 文件已經安裝注冊。
同時找到upload_max_filesize = 項,將最大上傳文件的大小設定到一個合適的值。如上圖
重新啟動Apache 服務,刷新頁面後我們可以看到自檢測結果已經發生變化,目前我們WEB服務端的配置已經完全符合推薦要求。
點擊"下一步"繼續…
接下來的配置是關於MYSQL資料庫的參數,我們需要創建一個資料庫管理員以及對應的資料庫、表名前綴;
可以通過PHPMYADMIN(MYSQL的在線管理工具,如果是通過EASYPHP安裝則已經自帶)來方便的創建用戶並同時創建與用戶名同名的資料庫;如下圖:
添加 [ 用戶 ] / [ 添加用戶 ], 輸入用戶名VECLOUD 、主機:127.0.0.1(如無分布部署或有額外的名稱解析,應採用本機IP), 勾選"創建與用戶同名的資料庫並授予所有許可權"
通過上述操作我們就為雲存儲服務端創建了專用的資料庫管理用戶及同名的資料庫。
返回到雲存儲的安裝界面,注意最後一項是關於"文件存儲路徑"的設置,在此處可以設定一個目標路徑,當雲存儲服務上線之後,用戶上傳分享的文件都將保存在這個路徑之下,因為目標路徑建議採用專業存儲陣列或設備,確保並發速度與數據安全。
接下來的頁面中可對雲存儲的管理用戶與密碼進行設置,提示:管理員將可以在後台管理所有用戶的信息以及系統的相關參數設置,一定要管理好該用戶並設置高強度的密碼,防止被猜測破解後登錄。
點擊"下一步"繼續
至此,"和信雲存儲"的安裝已經完成,可以試一下在瀏覽器中再次打開127.0.0.1 訪問
這一次打開的不再是安裝向導,一個真正架設在內網中的私有雲存儲用戶登錄界面呈現在眼前,VECloud 同時提供了Windows / Android / IPhone 、IPAD 的客戶端,對此私有雲存儲的訪問方式不限於網頁登錄,也可以隨時用移動設備登錄分享、同步自己的文件。
天互數據 為您解答,希望能幫到你
⑶ 七牛雲創建域名顯示未備案,但是域名已經完成工信部備案,這個要怎麼處理
你說的這個問題還是比較常見的,一般產生這種情況的原因是工信部的備案信息未同步到上海通管局,七牛雲以上海通管局查詢的結果為准,正常情況下,同步一般需要 1-2 天;
⑷ 關於七牛雲存儲自定義URL的問題
近段時間將使用七牛雲存儲來存放用戶上傳的數據,客戶端通過七牛的js-sdk與七牛交互,服務端C#實現了七牛相關的介面。在這過程中多多少少遇到點問題,在這里總結一下。原文: 使用七牛雲存儲的一些經驗總結
599錯誤處理
如果在與七牛的交互中出現http狀態碼為599的錯誤,一句話,不要猶豫,直接聯系七牛技術支持 。七牛的文檔也在很多地方提到這個錯誤,都是指導大家去聯系技術支持的。筆者是在分塊上傳後的 mkfile 調用時出現的,聯系技術支持後,說是調整了一下,讓我重試。後來就好了...
分塊上傳無法從回調中獲得文件的原始名
簡單上傳採用的是multipart/form-data方式上傳,七牛服務端能夠從請求中獲得文件的原始名,並支持使用魔法變數 $(fname) 回調業務伺服器。不過當使用分片上傳的時候情況有所不同。分片上傳需要在最後調用 mkfile ,來將分片拼接起來。但是, mkfile 介面支持普通的請求,並沒有附帶文件名,所以七牛也就無法獲得文件名,此時從 $(fname) 中是取不到文件名的。這個問題我也向七牛技術支持提交了問題,得到的結果是使用自定義變數 mkfile 支持將自定義變數放在url中,回調的時候自定義變數可以傳遞給業務伺服器。
慎用圖片預處理
七牛雲支持很多對文件的預處理,其中最常用的應該就是圖片預處理了,可以對圖片的大小做變換等。七牛推薦使用GET的方式直接指定圖片處理結果的url,像這樣:
http://qiniuphotos.qiniudn.com/gogopher.jpg?imageView2/1/w/200/h/200
處理後的圖片會自動緩存,用戶不用關心,只要每次訪問都用這個url就行了。然而,筆者在開始的時候,為了保持與其他文件形式統一的處理方法,對圖片使用了預處理(因為視頻什麼的只能預處理),即在token中指定了預處理。此時問題出現了,從後台的日誌看到,圖片的預處理通知回調竟然比正常的上傳成功回調還要快!這就導致預處理結果到來之前,我的業務伺服器的資料庫中還沒有這個圖片,無法保存預處理結果了。所以 推薦還是使用url直接處理,對圖片要慎用預處理
視頻文件無法快進播放
通常用戶在觀看視頻的時候都會根據自己的喜好,快速將視頻定位到指定的時間播放。實現這個功能,需要視頻本身有關鍵幀信息、服務端需要支持關鍵幀播放請求,在 這篇文章 中有詳細討論。
但是筆者發現,在使用七牛雲轉化後的視頻,這樣做是無效的。於是咨詢技術支持,得到的答案是:轉化的文件是具有關鍵幀的,但七牛使用CDN加速,所以關鍵幀請求需要CDN的支持,如果想要用這個功能的話,需要單獨聯系銷售或技術支持在CDN上配置,而且時間比較長。筆者聯系了銷售和技術支持,說是幫我配置,但到現在還沒有搞定,因為最近這個也不是特別重要,所以也沒有跟下去。
Callback校驗
這是可選的一個步驟。由於七牛雲會在上傳完成之後回調業務伺服器,所以理論上說業務伺服器需要校驗這個回調的合理性。原理在七牛的 文檔 中有,需要用到 HMAC-SHA1 簽名函數。但是七牛的sdk中沒有提供直接的方式來做校驗,在研讀文檔、多次失敗和查看sdk源碼後,筆者終於校驗成功了。關鍵的分歧在於,文檔中的這句話:
獲取明文:data = Request.URL.Path +」\n」 +Request.Body
這里的 Request.URL.Path 是否包含Querystring?答案是包含的!下面是筆者C#服務端的校驗代碼,使用的是ASP.NET Web Api:
```C#
byte[] key = System.Text.Encoding.UTF8.GetBytes(Qiniu.Conf.Config.SECRET_KEY);
using (HMACSHA1 hmac = new HMACSHA1(key))
{
var t = filterContext.Request.Content.ReadAsStringAsync();
t.Wait();
string rawbody = t.Result;
log.DebugFormat("request's rawbody : {0}", rawbody);
string text = filterContext.Request.RequestUri.PathAndQuery + "\n" + rawbody;
log.DebugFormat("PathAndQuery + \n + rawbody : {0}", text);
byte[] digest = hmac.ComputeHash(System.Text.Encoding.UTF8.GetBytes(text));
string computed = Qiniu.Util.Base64URLSafe.Encode(digest);
log.DebugFormat("Computed hash after base64 : {0}", computed);
IEnumerable<string> auths;
if (filterContext.Request.Headers.TryGetValues("Authorization", out auths) && auths.Count() == 1)
{
string auth = auths.First();
log.DebugFormat("Authorization in header : {0}", auth);
if (auth.StartsWith("QBox "))
{
var arr = auth.Substring(5).Split(':');
if (arr.Length == 2)
{
if (arr[1] != computed)
{
log.ErrorFormat("Authorization failed. Since auth from header {0} not equals computed {1}", arr[1], computed);
}
else
{
log.Debug("Authorization success.");
//only pass can be return
return;
}
}
else
{
log.Error("Callback Authorization's format is invalid, can not find two part after split by ':'.");
}
}
else
{
log.Error("Callback Authorization's format is invalid, missing leading 'QBox '.");
}
}
else
{
log.Error("The request from qiniu callback is missing 'Authorization'");
}
filterContext.Response = filterContext.Request.CreateResponse(System.Net.HttpStatusCode.Forbidden);
}
如下幾個注意點:
- 明文應當是請求的path+querystring部分和rawbody
- 對於.NET而言,明文和key都需要用UTF-8編碼變換成位元組才能進行簽名。而php中的hash_hmac函數完全不用這么復雜...
- 簽名的結果再用base64的url安全的方式編碼,再與請求的http頭部的Authorization比較
建議官方在文檔中加入一些相對底層一些的編程語言的實現,php太高端了...
## js-sdk實現略顯粗糙 ##
在使用過程中,我發現[官方的js-sdk](https://github.com/qiniupd/qiniu-js-sdk/)有幾個我覺得不好的地方:
**不能為每個文件獲取UpToken**
試想,在文件上傳過程中有獲取UpToken是必須的,而且UpToken又需要包含預處理指令,不同的文件顯然需要不同的UpToken,而在js-sdk的實現中,只在初始化這個上傳組件對象的時候請求一次上傳憑證,後面所有的上傳都需要使用這個預先得到的UpToken:
```javascript
uploader.bind('Init', function(up, params) {
getUpToken();
});
於是我修改了這部分,在 BeforeUpload 事件中請求UpToken。建議官方考慮更改這個地方
只能實現分片上傳,無法斷點續傳
js-sdk的實現在分片上傳的實現上,是很簡單的,不僅沒有使用分片,而是分塊(一塊4m,調用mkblk),而且沒有實現持久化ctx,或者類似的回調或介面。4m分塊這個問題還可以不追究,沒有實現持久化ctx就說不過去了,不持久化怎麼實現斷點續傳撒?!就算不實現,也應該給出回調的入口,讓調用者來實現持久化,而我實在無法找到這個'空子'可鑽,只能直接在源碼上改動了。
沒有復用流行類庫的東西
這個其實算不上問題,因為作為一個不依賴jquery的sdk,當然不能使用jquery現成的東西,比如ajax。不依賴jquery就算了,依賴plupload是幾個意思嘛,還依賴全局對象...於是最後,我乾脆自己將sdk改成了Backbone的類,將不要的東西統統去掉,使用jquery和underscore簡化代碼了...
⑸ 七牛雲存儲刪除文件需要多長時間
一般情況下,提交刪除命令以後會立即被刪除,如果刪除以後還能訪問,這個是因為cdn緩存的原因,用url?v=20150211就應該能看到文件已經刪除了,如果要更快速的刷新資源可以再空間設置的高級設置中,刷新一下資源的url。
⑹ 大數據撬動創新創業新契機
大數據撬動創新創業新契機
大數據被視為雲計算之後的又一科技熱點。從走在前沿的互聯網新興行業,到與人們生活息息相關的醫療、電力、通信等傳統行業,大數據浪潮無時無刻不在改變著人們的生產生活方式。巨變之下,國內外各行各業也在面臨新一輪創新創業的重大契機。
日前,上海大數據產業技術創新戰略聯盟(下稱「上海大數據聯盟」)召開數據中國產業創新峰會,並推出中國大數據最具投資價值排行榜。該聯盟秘書長孔華威表示:「參與競爭此次價值排行榜的,共有近450家大數據領域創業團隊,我們或許能從中發現新一代的『馬雲』。」
隨著大數據逐漸由概念轉化為生產力,無論是企業、資本機構還是政府、行業協會或聯盟,均開始積極布局大數據。之前,北京、上海、廣東,甚至河北、貴州、陝西等地方政府已將大數據作為重要戰略部署,並開始由鬆散走向組織化。河北成立秦皇島開發區數據產業基地;貴州8月份剛剛成立大數據產業技術聯盟,並正式出台文件,開放數據環境;而北京早在2012年便成立中關村大數據產業聯盟。
作為經濟發展重鎮,上海近兩年也積極推動大數據的發展。2011年,上海成立了智慧島數據產業園;上海科委副主任干頻表示,去年上海市科委正式發布了《上海推進大數據研究與發展三年行動計劃(2013-2015年)》,重點推進6大行業大數據公共平台和6類大數據行業應用的發展。
孔華威表示,大數據將成為上海科技創新的重要抓手。而成立於去年的上海大數據產業技術創新戰略聯盟則將實施具體的推動工作,下一步將著重整合資本與產業資源,連接資本與創業公司。他認為,外界都在關注BAT,但隨著產業的發展,一些創業公司也逐步崛起,應該受到更多關注。
一家名為星圖數據的創業公司不久前獲得數百萬美元的A輪投資;著名風險投資公司IDG則以4000萬元人民幣投資了大數據信用評估公司Wecash閃銀。毋庸置疑,大數據產業正在受到資本越來越多的關注。
從產業鏈角度來看,大數據主要分為三個層級:大數據的獲取、大數據傳輸和存儲、大數據應用(包括分析挖掘)。在國內,大數據獲取依然集中於BAT等大型互聯網公司;而在大數據傳輸和存儲方面,已經出現一些成功的創業公司,比如提供基礎雲計算服務的Ucloud,今年6月份已完成B輪5000萬美元的融資;更多的大數據創業公司則集中於大數據應用方面,包括剛剛獲得投資的星圖數據,以及一些軟體公司。
但整體而言,目前基於大數據的創業公司依然處於分散、規模小的狀態。孔華威表示,上海大數據聯盟將發布《2014年中國大數據產業年鑒》,構建中國大數據產業圖譜。
大數據企業成功路徑在哪裡?眾人科技創始人談劍峰表示,圍繞大數據,在硬體等基礎設施方面,國外的技術已經遙遙領先,像甲骨文、IBM這樣的公司非常成熟,因此,國內短時間內應該先從「軟」的方面入手。
目前,上海已出現一些專注大數據的公司,比如提供智慧安全及智慧交通專業解決方案博康智能、專注電商管理軟體的商派、解決移動金融安全的來誼電子等。孔華威表示,大數據創新創業企業要關注快和准,因為大數據核心在於海量數據快速和精準的計算。賽富投資基金合夥人金鳳春告訴記者,從產業和具體應用來看,圍繞社區服務的移動電商、電子游戲的渠道拓展等領域,有可能孕育引導潮流的大數據企業。七牛雲存儲CEO許式偉則認為,出於對用戶行為數據的精準分析,大數據時代的競爭會從「生產更多的商品」,轉到「生產讓客戶滿意的商品,甚至是定製化的商品」。未來大數據企業的商業模式之爭,就是服務之爭、智能化之爭。
以上是小編為大家分享的關於大數據撬動創新創業新契機的相關內容,更多信息可以關注環球青藤分享更多干貨
⑺ 七牛雲創建域名時提示創建域名受限,這什麼情況
七牛雲創建域名是有數量限制的,每日創建上限個數20,域名總數上限100,你看看自己是不是超了
⑻ 七牛雲儲存股權的投資價值分析,IPO是否有望
我們應該從哪些方面去分析七牛雲儲存股權基金的投資價值呢首先要查看一下你的這個要投資項目的可行性,是否能夠很好的運行,第二要看團隊質量,他們的這個團隊是不是很有Ji情很有規范,第三就要查看這個項目能不能給你帶來效益還有就是帶來效益的周期長不長,第四看與你合作的這個人可靠性怎麼樣,而七牛雲儲存已經完成了4輪融資,公司於2011年9月注冊成立,同年10月獲得數百萬A輪融資;2013年一月獲得千萬美元B輪投資;2014年8月獲得數千萬美元C輪投資。目前七牛雲儲存的市場估值已經超過10億美金。通過巨大的融資我們不難看出七牛雲儲存股權基金的可行性非常之高,,從合作人的角度來說天璣金服的優勢巨大故而選擇七牛雲儲存股權基金是一個正確的選擇。
⑼ 如何在不強制開啟 https 的情況下讓 http 和 https 都能使用七牛
的網頁生成了 過多的重定向。清除此網站的 Cookie 或允許第三方 Cookie 可能會解決該問題。如果 不能解決,則可能是伺服器配置的問題,而不是您的 計算機有問題。我設置後自己打開網站顯示這個.....問題出在那裡?使用的是下面這2種方法
⑽ ios 用七牛sdk上傳資源,報405錯誤是什麼情況
相信很多開發者會把圖片存放到七牛上,我的web站點也是吧圖片存儲到七牛上,對於以圖片為主的站點,這樣可以節省很大帶寬。
將圖片上傳到七牛伺服器的重點就是獲得上傳憑證uploadToken,直接把AccessKey和Secret放到客戶端太不安全,容易被反編譯。所以需要在伺服器端根據AccessKey和Secret動態生成一個uploadToken,然後傳回到客戶端,客戶端通過這個uploadToken將圖片上傳到七牛伺服器。
第一、在伺服器端生成uploadToken
//將圖片上傳到七牛 start
$bucket='七牛空間名稱';
$expires = 3600;
$accessKey='去七牛查看';
$secretKey='去七牛查看';
$client = new QiniuClient($accessKey,$secretKey);
$flags = array();
$scope = $bucket;
$deadline = time() + $expires;
$flags['scope'] = $scope;
$flags['deadline'] = $deadline;
$flags['returnBody'] = null;
echo $client->uploadToken($flags);
這里注意一下bucket:七牛空間名稱和deadline:uploadToken失效時間,具體可查看一下官網上傳憑證介紹
uploadToken($flags)是自己封裝的用於生成上傳憑證的函數
public function uploadToken($flags) { if(!isset($flags['deadline'])) $flags['deadline'] = 3600 + time(); $encodedFlags = self::urlsafe_base64_encode(json_encode($flags)); $sign = hash_hmac('sha1', $encodedFlags, $this->secretKey, true); $encodedSign = self::urlsafe_base64_encode($sign); $token = $this->accessKey.':'.$encodedSign. ':' . $encodedFlags; return $token; }
public static function urlsafe_base64_encode($str){
$find = array("+","/");
$replace = array("-", "_");
return str_replace($find, $replace, base64_encode($str));
}
第二、下載qiniu-android-sdk-7.0.0.jar和android-async-http-1.4.6並導入項目
第三、android上傳圖片
由於Android4.0 以後不允許在主線程進行網路連接,所以需要新開個線程來獲取上傳憑證。
/*
* 上傳圖片到七牛
*/
private void uploadImg(){
new Thread(new Runnable(){
@Override
public void run() {
//獲得七牛上傳憑證uploadToken
String token=getUploadToken();
//手機SD卡圖片存放路徑
String imgPath="";
try {
imgPath=FileUtil.getBasePath()+ "/test.jpg";
} catch (IOException e) {
e.printStackTrace();
}
if(token!=null){
String data = imgPath;
//圖片名稱為當前日期+隨機數生成
String key = getRandomFileName();
UploadManager uploadManager = new UploadManager();
uploadManager.put(data, key, token,
new UpCompletionHandler() {
@Override
public void complete(String arg0, ResponseInfo info, JSONObject response) {
// TODO Auto-generated method stub
Log.i("qiniu", info.toString());
}
}, null);
}
else{
Log.i("fail", "上傳失敗");
}
}
}).start();
}
FileUtil.getBasePath()使用來獲取SD卡基本路徑,getRandomFileName()生成一個隨機數來命名上傳圖片,具體方法我在這就不寫了。
獲得上傳憑證的方法也很簡單,直接使用httpget和伺服器通信,獲得第一步中生成的數據即可。(注意10.0.2.2是模擬器提供的特殊IP,等同於在電腦端的環回測試IP127.0.0.1)
/*
* 獲得七牛上傳憑證uploadtoken
*/
private String getUploadToken()
{
HttpClient client = new DefaultHttpClient();
StringBuilder builder = new StringBuilder();
HttpGet myget = new HttpGet("");
try {
HttpResponse response = client.execute(myget);
BufferedReader reader = new BufferedReader(new InputStreamReader(
response.getEntity().getContent()));
for (String s = reader.readLine(); s != null; s = reader.readLine()) {
builder.append(s);
}
return builder.toString();
} catch (Exception e) {
Log.i("url response", "false");
e.printStackTrace();
return null;
}
}
通過LOG日誌可以看到Qiniu--success,說明上傳成功。