PDA

View Full Version : دانلود کنید:کدهای کاربردی برای طرحی وب سایت و نظر شما در مورد وب سایت بنده



morteza_mokhtari
پنج شنبه 20 تیر 1392, 16:13 عصر
سلام دوستان بنده دو سه ماهی هست که وب سایتم رو پاپلیش کردم.چند وقتی هست که میخوام سایت رو تویه سایت برنامه نویس معرفی کنم که دوستان انتقادات و پیشنهادات خودشون رو در مورد وب سایت بگن که بنده تویه ورژن های بعدی وب سایت اعمال کنم.بنده سعی میکنم خلاصه ای از مواردی که تویه سایت رعایت کردم رو در زیر بنویسم که بهتر بتونید در مورد وب سایت قضاوت کنید.

موارد امنیتی
. جلوگیری از حملات XSS با استفاده از کتابخانه antixss (البته اگه تونسته باشم تمام حفره های رو گرفته باشم)
2. جلوگیری از حملات Sql Injection استفاده از تکنولوژی Linq و Store Procedure و کد rewrite در وب کانفیگ
3. جلوگیری از شنود رمز عبور(نام کاربری به همراه هش پسورد( javascript sha256) و یک عدد تصادفی که از سمت سرور میاد توسط الگوریتم سزار(ضعف الگوریتم بهتر هست که از RSA استفاده شود) رمز میشه و سمت سرور ارسال میشود)
4.رمز کردن کانگشن استرینگ
5. ذخیره رمز عبور هش شده در جدول به جای ذخیره خود رمز عبور
6 - جلوگیری از حملات Csrf با ماژول AntiCSRF
7. استفاده از جاوااسکریپت و عبارات منظم برای ورود صحیح اطلاعات سمت کلاینت
8. استفاده از عبارات منظم برای چک کردن صحت ورود اطلاعات در سمت سرور
9. استفاده از کیبورد مجازی برای ورود اطلاعات برای جلوگیری از حملات ثبت کننده کلید (لاگین صفحه مدیر سایت)
11. مخفی شدن صفحه لاگین پس از سه بار لاگین نا موفق(لاگین مدیر وب سایت)
12. استفاده از تصاویر امنیتی در هنگام ورود اطلاعات
13 . استفاده از jquery captcha و متصل کردن آن به یک custom validator
14. عدم نمایش جزئیات خطاهای ایجاد شده در سایت
15. ثبت اطلاعات کاربری برای جلوگیری از جرائم سایبری(IP, Browser, Platform, Date , ….)
16.امن کردن کوکی: نام کاربری به همراه هش پسورد به همراه IP فردی که لاگین میکنه و تاریخ انقضای کوکی توسط تابع رمزنگاری AES روز شده و تویه کوکی قرار داده می شود.

بهنیه سازی سمت کلاینت : گرید A توسط افزونه Yslow فایرفاکس
بهینه سازی سمت سرور : Cache کردن تمام کوئری های صفحه Masterpage
امکانات سایت : اتاق گفتگو - ارسال مطلب- انجمن تخصصی - auto complate برای جستجو , جملات حکیمانه, انتخاب قالب توسط کاربر(سایت رو با مرورگرهایی که CSS3 پشتیبانی نمیکنند هم تست کنید)

کدهای کاربردی رو می توانید از آدرس زیر دانلود کنید.(سایت خودم)
http://www.se-commerce.ir/post/1139/%DA%A9%D8%AF%D9%87%D8%A7%DB%8C-%DA%A9%D8%A7%D8%B1%D8%A8%D8%B1%D8%AF%DB%8C-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%B7%D8%B1%D8%A7%D8%AD%DB%8C-%D9%88%D8%A8-%D8%B3%D8%A7%DB%8C%D8%AA-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-C#‎‎

دوستان اول معذرت خواهی میکنم به دلیل اینکه یه کم تاپیک طولانی شد.چند تا سوال هم دارم
به جزء موارد بالا آیا موارد دیگه هست که بتونم تویه سایت رعایت بکنم.
چطوری میتونم مطمئن بشم که امنیت سایت در حد قابل قبولی هست.آیا نرم افراز خاصی وجود داره؟
ممنون میشم از دوستایی که این تاپیک رو مطالعه میکنند نظرات خودشون رو هرچند سلیقه ای بیان کنند که بتونم تویه وب سایت های دیگه ای که طراحی میکنم اعمال کنم با تشکر.

imanasp
پنج شنبه 20 تیر 1392, 16:53 عصر
من از Acunetix Web Vulnerability برای تست امنیت وب سایتام استفاده می کنم امکانات خوبی برای چک امنیت داره و یک گزارش مفصل از راهکارهای امنیتی برای بهبود سایت بهت میده و در آخر هم یک رتبه از نظر سطح امنیتی بهت میده

morteza_mokhtari
پنج شنبه 20 تیر 1392, 16:58 عصر
سلام دوست عزیز ممنون . بنده برای تمامی ورودی ها کپچا گذاشتم .این نرم افزار برای تست امنیت فکر کنم میاد یه سری ورودی میده که میزان آسیب پذیر بودن سایت رو بررسی کنه.وقتی که کپچا وجود داشته باشه نمیتونه ورودی هایی رو که میخواد بده و عملا سوراخ های امنیتی رو نمیتونه پیدا کنه.

morteza_mokhtari
جمعه 21 تیر 1392, 22:46 عصر
تابع تبدیل استرینگ به SHA256
تابع گرفتن کلمات کلیدی جستجو شده توسط کاربران در موتورهای جستجو
تابع تشخیص ورود موتورهای جستجو به وب سایت
تابع کاهش اندازه و بهینه سازی تصاویر بدون افت کیفیت
تابع تبدیل حروف انگلیسی به حروف فارسی
تابع حذف فایل از فولدر
تابع انتخاب تصویر و یا فایل تصادفی از یک پوشه
تابع تشخیص ورود کاربر از طریق موبایل یا تبلت
تابع حذف تگ های مخصوص به ویرایشگر word
تابع تبدیل بایت به کیلوبایت یا مگابایت
و چندین تابع کاربردی دیگر...

دوستان عزیز کد ها رو میتونید مستقیم از لینک زیر دانلود کنید.
لینک دانلود (http://www.se-commerce.ir/fileArchive/Files/www.se-commerce.ir.rar)
دوستان لطف کنید نظراتتون رو در مورد سایت در ادامه بنویسید.با تشکر

imanasp
جمعه 21 تیر 1392, 23:15 عصر
جلوگیری از حملات XSS با استفاده از کتابخانه antixss

راجع به نحوه انجام این کار توضیح میدی

ali_mnkt
جمعه 21 تیر 1392, 23:30 عصر
تابع تبدیل استرینگ به SHA256
تابع گرفتن کلمات کلیدی جستجو شده توسط کاربران در موتورهای جستجو
تابع تشخیص ورود موتورهای جستجو به وب سایت
تابع کاهش اندازه و بهینه سازی تصاویر بدون افت کیفیت
تابع تبدیل حروف انگلیسی به حروف فارسی
تابع حذف فایل از فولدر
تابع انتخاب تصویر و یا فایل تصادفی از یک پوشه
تابع تشخیص ورود کاربر از طریق موبایل یا تبلت
تابع حذف تگ های مخصوص به ویرایشگر word
تابع تبدیل بایت به کیلوبایت یا مگابایت
و چندین تابع کاربردی دیگر...


دوستان عزیز کد ها رو میتونید مستقیم از لینک زیر دانلود کنید.
لینک دانلود (http://www.se-commerce.ir/fileArchive/Files/www.se-commerce.ir.rar)
دوستان لطف کنید نظراتتون رو در مورد سایت در ادامه بنویسید.با تشکر

تابع IsCrawler کارش چیه ؟

morteza_mokhtari
جمعه 21 تیر 1392, 23:35 عصر
سلام دوست عزیز.برای اینکار کافی شما کتابخانه antixss رو دانلود کنید و به پروژه تون اضافه کنید.بعد با استفاده از متد های اون میتونید عمل تمیز سازی رو انجام بدهید برای اطلاعات بیشتر به سایت dotnettips.info مراجعه کنید.کدهای زیر کدهایی هستش که بنده تویه صفحه ثبت نام گذاشتم که برای نمونه براتون میذارم.التبه همین طور که نوشتم نمیدونم که تونسته باشم درست ازش استفاده کرده باشم و تمامی وروردی ها رو بسته باشم.


protected void submit_Click(object sender, EventArgs e)
{
if(submit.CausesValidation)
{
Page.Validate("1250");
if (Page.IsValid)
{

var ValidUserName = from v in database.Users_Ms
where v.UserID == TextBox3.Text
select v;


if (ValidUserName.Count() == 0)
{

if (!ValidateInput(TextBox4.Text,
@"^[ا-یءئ]+(\s{1}[ا-یءئ]+)?$", "نام خود رو صحیح وارد نمایید"))

TextBox4.Focus();

else if (!ValidateInput(TextBox3.Text,
@"^[a-zA-Z0-9]{4,15}([._]?[a-zA-Z0-9]+)*$", "نام کاربری باید ترکیبی از حروف و اعداد به همراه(.,_)باشد."))

TextBox3.Focus();
else if (!ValidateInput(TextBox2.Text,
@"^[a-zA-Z0-9@&#!._\s]{6,15}$", "رمز عبور باید حداقل 6 کارکتر و حداکثر 15 کارکتر باشد و از یکی از حروف a-z,A-Z,1-9,@&#!._ باشد"))

TextBox2.Focus();


//else if (!ValidateInput(TextBox5.Text,
// @"^(091||093){1}[0-9]{8}$", "شماره تلفن شما صحیح نمیباشد"))

//textBox4.Select(); // select invalid TextBox
else if (!ValidateInput(TextBox5.Text,
@"^(?("")("".+?""@)|(([0-9a-zA-Z]((\.(?!\.))|[-!#\$%&'\*\+/=\?\^`\{\}\|~\w])*)(?<=[0-9a-zA-Z])@))(?(\[)(\[(\d{1,3}\.){3}\d{1,3}\])|(([0-9a-zA-Z][-\w]*[0-9a-zA-Z]\.)+[a-zA-Z]{2,6}))$", "لطفا ایمیل خود را درست وارد "))

TextBox5.Focus();

else if (!ValidateInput(TextBox6.Text,
@"^((ht|f)tp(s?)\:\/\/[0-9a-zA-Z]([-.\w]*[0-9a-zA-Z])*(:(0-9)*)*(\/?)([a-zA-Z0-9\-\.\?\,\'\/\\\+&amp;%\$#_]*)?)|(\x00*)$", "لطفا وب سایت خود را درست وارد نمایید"))

TextBox6.Focus();

else
{
try
{
string UrlID = TextBox3.Text.GetHashCode().ToString() + DateTime.Now.Second.ToString();
string body = "";
body += "با سلام خدمت شما {0} عزیز, <br/>";
body += "از شما به خاطر ثبت نام در سایت انجمن علمی.دانلود se-commerce.ir متشکریم ! ما خوشحال هستیم که شما به جمع ما آمدید , امیدواریم که با پیوند شما به جمع ما , بتوانیم از نظرات و سخن های ارزشمند شما برای بهتر شدن سایت استفاده کنیم .";
body += "برای فعال سازی حساب کاربری خود لطفا بر رویه لینک زیر کلیک نمایید.<br/> ";
body = string.Format(body,Sanitizer.GetSafeHtmlFragment(T extBox4.Text));

body += "<div style=\"text-align:left;\"><a href=\"http://www.se-commerce.ir/mailverify/2/{0}\">http://www.se-commerce.ir/mailverify/2/{0}</a></div><br/><br/>";
body = string.Format(body, UrlID);

body += " تایید ایمیل جهت احترام به حریم خصوصی کاربران انجام می شود. در صورتی که اشتباها این نامه را در یافت کرده اید، آنرا حذف کنید.";
body += "سایت se-commerce.ir به هیچ عنوان از اطلاعات تماس شما برای مقاصد دیگری به جز اطلاع رسانی استفاده نخواهد کرد<BR/>";


body += "با آرزوی موفقیت و سرافرازی برای شماانجمن علمی.دانلود se-commerce.ir ";
SendEmail.send(Sanitizer.GetSafeHtmlFragment(TextB ox5.Text), "عضویت در وب سایت ", body);

Users_M user = new Users_M();
UsersInRole role = new UsersInRole();
Profile profile = new global::Profile();
user.DispalyName = Sanitizer.GetSafeHtmlFragment(TextBox4.Text);
user.UserID = Sanitizer.GetSafeHtmlFragment(TextBox3.Text);
user.Password = Sanitizer.GetSafeHtmlFragment(TextBox2.Text);
user.LastLoginDate = DateTime.Now;
user.IsApproved = false;
user.FingerPrint = Guid.NewGuid().ToString();
user.Email = Sanitizer.GetSafeHtmlFragment(TextBox5.Text);
user.Website = Sanitizer.GetSafeHtmlFragment(TextBox6.Text);
user.CreateDate = DateTime.Now;
user.UrlID = UrlID;
user.RequestDate = Convert.ToDateTime("3/5/2013 3:43:22 PM");
user.GooglePlus = false;
database.Users_Ms.InsertOnSubmit(user);
database.SubmitChanges();
role.UserID = Sanitizer.GetSafeHtmlFragment(TextBox3.Text);
role.RoleName = "Users";
database.UsersInRoles.InsertOnSubmit(role);
database.SubmitChanges();
profile.UserID = Sanitizer.GetSafeHtmlFragment(TextBox3.Text);
profile.ImageUrl = "default.gif";
database.Profiles.InsertOnSubmit(profile);
database.SubmitChanges();

CookieSecurityProvider.EncryptData(false, Sanitizer.GetSafeHtmlFragment(TextBox3.Text), Sanitizer.GetSafeHtmlFragment(TextBox2.Text));


ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "RegisterScript1", "ShowAlertMessage('برای تکمیل پروفایل کاربری خود لطفا بر رویه ادامه <a href=forums/changeprofile.aspx>کلیک</a> نمایید', '', 'کاربر گرامی ثبت نام شما با موفقیت انجام شد برای فعال سازی حساب کاربری خود لطفا صندوق پستی ایمیل خود را باز کرده و بر رویه لینک فعال سازی کلیک نمایید. برای دانلود پست های ویژه علاوه بر ثبت نام باید ابتدا سایت رو در گوگل محبوب نمایید لطفا پس از ثبت نام این عمل رو انجام داده که در دیتابیس سایت ذخیره شود که پس از ورود مجدد به سایت این عمل مورد نیاز نباشد');", true);
clearTextbox();

}

catch (Exception)
{
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "RegisterScript2", "ShowErrorBox('خطا', 'کاربر گرامی خطایی رخ داده است لطفا مجددا تلاش کنید.');", true);

}
}
}
else
{
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "RegisterScript3", "ShowErrorBox('خطا', 'کاربر گرامی نام کاربری شما قابل استفاده نمی باشد لطفا نام کاربری دیگری را انتخاب کنید.');", true);


}
}
else
{
Label_message.Text = "کاربر گرامی لطفا جاوااسکریپت مرورگر خود را فعال نمایید";
}
}
}
private bool ValidateInput(
string input, string expression, string message)
{
// store whether the input is valid
bool valid = Regex.Match(input, expression).Success;

// if the input doesn't match the regular expression
if (!valid)
{
// signal the user that input was invalid
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "RegisterScript4", "ShowErrorBox(" + message + ",'خطا');", true);


} // end if

return valid; // return whether the input is valid
}

amin1softco
جمعه 21 تیر 1392, 23:44 عصر
خسته نشی ولی چرا زدی به سیم آخر مگه تو نبودی که یک خط این کد ها را نمی خواستی به من بدی :دییییییییییییییی

morteza_mokhtari
جمعه 21 تیر 1392, 23:48 عصر
سلام آقای رجب زاده خوب هستید.بنده یادم نمیاد تا حالا کدی کسی خواسته باشه و بنده بهش نداده باشم.شما حتما کل سایت رو میخواستید که مقدور نبوده.برادر رجب زاده لطف کنید نظرتون رو هم در مورد وب سایت بگید.ممنوتم.

morteza_mokhtari
جمعه 21 تیر 1392, 23:52 عصر
تابع IsCrawler رو بنده برای واقعی کردن آمار وب سایت استفاده کردم.آماری رو که شما در صفحه آغازین وب سایت میبیند موتورهای جستجو رو هم به حساب میاره.ولی آماری رو که تویه صفحه آدمین سایت گذاشتم فقد افرادی که وارد سایت میشند رو محاسبه میکنه.این جوری میشه دید واقعی تری نسبت به بازدید کنندگان وب سایت داشت.به نظر من 95 درصد وب سایت ها آمارشون دقیق نیست یعنی موتورهای جستجو رو هم حساب میکنند.شاید سایت برنامه نویس هم همین طور باشه.به نظرم آمار واقعی 10 درصد آماری هست که تویه وب سایت نشون داده میشه.یعنی 90 درصدش crawler ها هستند.

ali_mnkt
جمعه 21 تیر 1392, 23:58 عصر
یک سئوال دارم که امیدوارم جواب بدید . در قسمت جستجو و یا زمانی که روی برچسب ها کلیک می شه بر اساس اون یکسری مطالب مرتبط نشون داده می شه و اون کلمات در صفحه زرد می شن می خواستم بدونم نحوه زرد کردن کلمات جستجو شده چطور انجام می شه ؟

در ضمن فکر کنم از fulltext برای جستجو استفاده کردی و حواست نبوده برخی از کلمات بدون استفاده رو مثل " ها ، در ، به و ... " در جستجو در نظر نگیری ، برای این کار می تونی از stop list استفاده کنی امیدوارم که جواب سئوالمم بدی

ali_mnkt
شنبه 22 تیر 1392, 00:19 صبح
سرعت سایت خیلی خوبه ، می شه راهنمایی کنید که چطور می تونیم به همچین سرعت بار گزاریی برسیم ؟ یعنی چه مسائلی رو باید در نظر بگیریم؟ مثلا برای load کردن مطالب در grid کد bind کردن رو در form load گذاشتی یا نه ؟ چون شنیدم اگه کد های خواندن داده ها رو form load بذاریم سایت دیرتر بالا می یاد

در رابطه با انجمن سئوال و جواب : آیا کامل خودت نوشتی یا نه آمادست ؟


در کل کارت خیلی خوبه ، من که خوشم اومد

amin1softco
شنبه 22 تیر 1392, 13:56 عصر
سایت هم خوبه آقای مختاری عزیز ;) فقط یکمی سریع باز می شه آدم حول می کنه :چشمک:

morteza_mokhtari
شنبه 22 تیر 1392, 16:37 عصر
یک سئوال دارم که امیدوارم جواب بدید . در قسمت جستجو و یا زمانی که روی برچسب ها کلیک می شه بر اساس اون یکسری مطالب مرتبط نشون داده می شه و اون کلمات در صفحه زرد می شن می خواستم بدونم نحوه زرد کردن کلمات جستجو شده چطور انجام می شه ؟

در ضمن فکر کنم از fulltext برای جستجو استفاده کردی و حواست نبوده برخی از کلمات بدون استفاده رو مثل " ها ، در ، به و ... " در جستجو در نظر نگیری ، برای این کار می تونی از stop list استفاده کنی امیدوارم که جواب سئوالمم بدی

سلام دوست عزیز بنده از fulltext استفاده نکردم .highlight شدن کلمه ی مورد جستجو رو هم با جاواسکرییت انجام میدم .کدش رو براتون میذارم امیدوارم که بدردتون بخوره.فقد نکته قابل ذکر اینه که شما باید کلمه مورد جستجو رو به تابع بدهید که براتون highlight بکنه.میتونید کلمه مورد جستجو با جاوااسکریپت از کوئزی استرینگ بگیرید یا اون رو درون یک input از نوع hidden قرار بدید و توسط جاوااسکریت مقدارش رو بخونید و به تابع زیر بدهید.


jQuery.fn.highlight = function (pat) {
function innerHighlight(node, pat) {
var skip = 0;
if (node.nodeType == 3) {
var pos = node.data.toUpperCase().indexOf(pat);
if (pos >= 0) {
var spannode = document.createElement('span');
spannode.className = 'highlight';
var middlebit = node.splitText(pos);
var endbit = middlebit.splitText(pat.length);
var middleclone = middlebit.cloneNode(true);
spannode.appendChild(middleclone);
middlebit.parentNode.replaceChild(spannode, middlebit);
skip = 1;
}
}
else if (node.nodeType == 1 && node.childNodes && !/(script|style)/i.test(node.tagName)) {
for (var i = 0; i < node.childNodes.length; ++i) {
i += innerHighlight(node.childNodes[i], pat);
}
}
return skip;
}
return this.each(function () {
innerHighlight(this, pat.toUpperCase());
});
};
اینم کدی هست که تویه صفحه index.aspx گذاشتم

$(document).ready(function () {
if (document.getElementById("ContentPlaceHolder1_SearchKeyInputHidden").value != "0") {
var myString = document.getElementById("ContentPlaceHolder1_SearchKeyInputHidden").value;

myArray = myString.split("-");
for (i = 0; i < myArray.length; i++) {
$('#main').highlight(myArray[i]);
}


}
});
این رو هم بذارید تویه css صفحه و به سلیقه خودتون شخصی سازیش بکنید.
.highlight
{
-moz-border-radius: 5px;
-webkit-border-radius: 5px;
border-radius: 5px;
background-color: #FFCC00;
padding: 0px 2px;
}

morteza_mokhtari
شنبه 22 تیر 1392, 16:51 عصر
سرعت سایت خیلی خوبه ، می شه راهنمایی کنید که چطور می تونیم به همچین سرعت بار گزاریی برسیم ؟ یعنی چه مسائلی رو باید در نظر بگیریم؟ مثلا برای load کردن مطالب در grid کد bind کردن رو در form load گذاشتی یا نه ؟ چون شنیدم اگه کد های خواندن داده ها رو form load بذاریم سایت دیرتر بالا می یاد

در رابطه با انجمن سئوال و جواب : آیا کامل خودت نوشتی یا نه آمادست ؟


در کل کارت خیلی خوبه ، من که خوشم اومد

انجمن رو خودم ننوشتم و کدش آماده بود.این انجمن توسط آقای فتح اللهی(با تشکر از آقای فتح اللهی برای نوشتن انجمن که خیلی چیزها از تویه انجمنشون یاد گرفتم.خدا خیرشون بده.) نوشته شده است.بنده تویه سایتم اصلا از Gridview استفاده نمیکنم و به جاش از literal استفاده میکنم.کدهای html رو که میخوام تویه صفحه نمایش بدم رو خودم دستی مینویسم و توسط کنترل literal تویه صفحه نمایش میدم.از گرید ویو فقد تویه قسمت ادمین سایت استفاده کردم.برای بالارفتن سرعت سایت مهمترین چیز کاهش درخواست هایی هست که به صفحه ارسال میشه هستش.مثلا برای هر عکسی که تویه صفحه دارید یه دونه درخواست به سرور فرستاده میشه.برای کاهش درخواست ها به سمت سرور راه های مختلفی وجود داره که یکی از آنها ترکیب کردن تصاویر در یک تصویر که بهش CSS Spirte گفته میشه که اگه جستجو کنید مطلب زیاد هست تویه اینترنت که میتونه کمکتون کنه.یه روش دیگه استفاده از expire date اگه اشتباه نکنم هستش.با این کار شما به مرورگر میگید که مثلا فلان تصویر به مدت یک سال هیچ تغییری نخواهد کرد و دیگه هیچ درخواستی رو به سرور برای گرفتن تصویر ارسال نخواهد کرد و سرعت سایت شما میره بالا.برای استفاده از expire کافیه کد زیر رو تویه web.config خودتون بذارید.


<staticContent>
<clientCache cacheControlMode="UseExpires" httpExpires="Fri, 01 Sep 2017 00:00:00 GMT"/>
</staticContent>


شما برای بهینه کردن سایتتون بهتره افزونه Yslow رو رویه مرورگرتون نصب کنید و قسمت هایی که نمرات پایین به سایتتون میده رو بررسی کنید.موفق باشید

ali_mnkt
شنبه 22 تیر 1392, 20:08 عصر
دوست عزیز مرسی مرسی از راهنمایی هات . یک سئوال دیگه واسم پیش امده و اون هم در رابطه با textbox مربوط به serch هست که وقتی اول کلمه جستجو رو می زنی به صورت auto complate
یکسری گزینه ها رو به ما می ده . می خواستم بدونم اون رو چطور پیاده سازی کردی ؟

maktab
شنبه 22 تیر 1392, 22:37 عصر
شما از قابلیت gzip هم در سایتتون استفاده کردید. درسته؟ بصورت این کار را کردید؟ من میخواستم فقط این قابلیت را برای فایل های js انجام بدم ولی جوابگو نبود.

morteza_mokhtari
یک شنبه 23 تیر 1392, 17:08 عصر
دوست عزیز مرسی مرسی از راهنمایی هات . یک سئوال دیگه واسم پیش امده و اون هم در رابطه با textbox مربوط به serch هست که وقتی اول کلمه جستجو رو می زنی به صورت auto complate
یکسری گزینه ها رو به ما می ده . می خواستم بدونم اون رو چطور پیاده سازی کردی ؟

سلام دوست عزیز به وب سایت dotnettips.info مراجعه کرده و در قسمت سرچ بزن auto complate .موفق باشید

morteza_mokhtari
یک شنبه 23 تیر 1392, 17:12 عصر
شما از قابلیت gzip هم در سایتتون استفاده کردید. درسته؟ بصورت این کار را کردید؟ من میخواستم فقط این قابلیت را برای فایل های js انجام بدم ولی جوابگو نبود.

سلام دوست عزیز بنده هم این کار رو برای فایل های js فقد انجام دادم به این صورت



<asp:ScriptManager ID="ScriptManager1" runat="server" ScriptMode="Release">
<CompositeScript>
<Scripts>
<asp:ScriptReference Path="~/Scripts/jquery-1.6.1.min.js" />

<asp:ScriptReference name="MicrosoftAjax.js"/>
<asp:ScriptReference Path="~/Scripts/jquery.autocomplete.min.js" />
<asp:ScriptReference Path="~/Scripts/jquery.easing.1.3.js" />
<asp:ScriptReference Path="~/Scripts/alertbox.js" />
<asp:ScriptReference Path="~/Scripts/stepcarousel.js" />
<asp:ScriptReference Path="~/Scripts/FarsiType.js" />
<asp:ScriptReference Path="~/Scripts/jquery.autocomplete.js" />
<asp:ScriptReference Path="~/Scripts/jquery.printarea.js" />
<asp:ScriptReference Path="~/Scripts/DetectMobile.js" />
<asp:ScriptReference Path="~/Scripts/jquery_Tools.js" />
<asp:ScriptReference Path="~/Scripts/jquery.atooltip.min.js" />

</Scripts>
</CompositeScript>
</asp:ScriptManager>


این کد علاوه بر اینکه میاد فایل های جاوااسکریپت صفحه رو gzip میکنه میاد آنها رو تبدیل به یک فایل با پسوند axd میکنه و سمت کلاینت ارسال میکنه. که تعداد درخواست برای گرفتن فایل های js کاهش پیدا میکنه .همیچنین expire date هم به فایل اضافه میکنه.موفق باشید.

maktab
یک شنبه 23 تیر 1392, 17:25 عصر
ممنون ولی من قبلا این را تست کردم حداقل برای من این روش چندتا مشکل داشت.
- فرض کنید من یه صفحه مسترپیج داشته باشم و دوتا فایل js در آن گذاشته باشم. یکی کتابخانه jquery و دومی یه فایل js که برای اسلایدشوم استفاده میشه. حالا یه فایل js دیگه دارم که فقط در صفحه اصلی استفاده میشه و در اونجا فراخوانی شده. صفحه اصلی هم از مسترپیج استفاده میکنه پس فقط میام و اون js که نیاز دارم در صفحه اصلی میذارم. ولی با توجه به روشی که شما گفتید وقتی پروژه را اجرا میکنم صفحه اصلی ارور میده چون js که در صفحه اصلی استفاده شده نیاز به کتابخانه jquery داره و اون هم به دلیل استفاده از این روش غیر قابل دسترس شده. اگر توضیحاتم واضح نبود بگید مثال بزنم.
- مشکل بعدی هم برای js هایی هست که من نقشی در فراخوانی آن ندارم. شما یک کنترل لاگین به صفحه اضافه کنید بعد اجرا کنید میبینید که دو یا سه تا js فراخوانی شده که کار همین کنترل لاگینه asp.net هست. خب اینا رو من چکار کنم؟

بهترین روش اگر اشتباه نکنم gzip کردن در سطح کلی سایت یا همان web.config هست. از این روش استفاده کردم ولی ارور داد. یعنی نتونستم کدهای درستی براش پیدا کنم. هر چی بود تست کردم و جواب نگرفتم.

morteza_mokhtari
یک شنبه 23 تیر 1392, 22:19 عصر
سلام دوست عزیز شما با استفاده از کد زیر میتونید فایل های جاوااسکریپتی که تویه صفحات دیگه دارید رو به اسکریپت منجر اضافه کنید .به این صورت


ScriptManager sm = ScriptManager.GetCurrent(this.Page);
sm.CompositeScript.Scripts.Add(new ScriptReference("javasciptpath");

در مورد مشکل دوم شما میتوانید از کتابخانه ScriptReferenceProfiler.dll استفاده کنید.با استفاده از این کتابخانه شما میتونید تمام جاوااسکریپت هایی که خود asp.net اضافه کرده رو بدست بیارید و تویه اسکریپت منجر بالا قرار بدهید.
gzip کردن تویه webconfig رو هم بلد نیستم بببین لینک زیر به کارت میاد.موفق باشید
http://stackoverflow.com/questions/668774/css-js-gzip-compression-with-asp-net

maktab
شنبه 05 مرداد 1392, 14:25 عصر
در مورد مشکل دوم شما میتوانید از کتابخانه ScriptReferenceProfiler.dll استفاده کنید.با استفاده از این کتابخانه شما میتونید تمام جاوااسکریپت هایی که خود asp.net اضافه کرده رو بدست بیارید و تویه اسکریپت منجر بالا قرار بدهید.


سلام. ممنون
میشه در مورد حالت دوم یه مثال بزنی. مثلا چطور من میتونم اسکریپت هایی که برای لاگین asp.net بصورت خودکار ایجاد میشن را شناسایی کنم؟

فایل های css را چطور میشه gzip کرد؟

morteza_mokhtari
یک شنبه 06 مرداد 1392, 18:56 عصر
http://www.dotnetcurry.com/ShowArticle.aspx?ID=524
سوال دومتون رو هم با عرض پوزش بلد نیستم.موفق باشید

alireza.tofigh
دوشنبه 07 مرداد 1392, 12:01 عصر
ما که محبوب کردیم ولی دانلود نشد که...

mehran_337
پنج شنبه 19 دی 1392, 19:19 عصر
سلام چرا لینک دانلود باز نمی شه؟