PDA

View Full Version : دریافت اطلاعات از فایل js



parandweb
یک شنبه 23 تیر 1392, 20:45 عصر
با سلام

همانطور که می دانیم مرورگر بعد از یکبار خواندن یک فایل جاوا اون رو ذخیره می کند و اگر محتویات اون فایل جاوا تغییر کند تا صفحه رفرش نشود مرورگر از تغییرات توی اون فایل با خبر نمیشه من یک فایل js توی سایتم دارم که هر روز محتویات درون اون رو تغییر می دهم اما متاسفانه محتویات جدید برای برخی کاربران نمایش داده نمی شود من میخوام کاری کنم تا این فایل با هر بار مراجعه به سایتم از دوباره فراخوانی شود و محتویات بروز شده در اختیار مرورگر قرار بگیرد آیا دوستان روشی سراغ دارین ؟؟؟


بی نهایت از لطفتون سپاسگذارم:لبخندساده:

jalil_gh
یک شنبه 23 تیر 1392, 21:45 عصر
شما میتونید از طریق وب‌سرور هدرهای مربوط به کش کردن فایل ها رو تغییر بدید تا مرورگر فایل‌های جاوااسکریپ رو کش نکنه. و یا اینکه فایل جاوااسکریپت رو هر بار تغییر نام بدید (مثلا ورژن فایل رو هر به انتهای اون اضافه کنید) و لینک مربوط به اون رو تو صفحه HTML تغییر بدید و ....
اگه فایل جاوااسکریپ شما حجمش زیاد نیست شما میتونید اونو به صفحه اصلی include کنید. مثلا تو php.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>some title</title>
</head>
<body>
<script type="text/javascript">
<?php
include 'js/test.js';
?>
</script>
</body>
</html>

darkcms
یک شنبه 23 تیر 1392, 22:02 عصر
با سلام.
این دو تگ را داخل تگ <head> و بلافاصله پس از تگ <title> قرار دهید:


<meta http-equiv="Cache-Control" content="no-cache">
<meta http-equiv="Pragma" content="no-cache">

به امید فردایی بهتر!:لبخندساده:

parandweb
یک شنبه 23 تیر 1392, 22:43 عصر
دوستان این فایل در وبلاگ های دیگه هم قرار می گیرد فقط در سایت خودم نیستش آیا توی آپاچی نمیشه هیچ فرمانی مبنی بر اینکه فقط اون فایل جاوا کش نشه؟؟!؟

از دوستانی که جواب دادن بی نهایت سپاسگذارم darkcms (http://barnamenevis.org/member.php?285486-darkcms) و jalil_gh (http://barnamenevis.org/member.php?282160-jalil_gh) :قلب:

parandweb
یک شنبه 23 تیر 1392, 23:01 عصر
برای جلوگیری از کش شدن فایل های سی اس اس میتوانید از یک Querystring ساده استفاده کنید که به اشتباه به مرورگر اطلاع میدهد که فایل داینامیک است و نباید کش شود.

<script src="js/script.js?v=1"></script>

همان طور که دیدید ما این عبارت را اضافه کردیم :

?v=1

عبارت ما حتما نباید v باشد:

?parandweb=1

jalil_gh
یک شنبه 23 تیر 1392, 23:47 عصر
الان اون فایل تو وبلاگهای دیگه قرار داره و یا میخایید قرار بدید؟؟؟
اگه قرار ندادید که میتونید از وبلاگهای دیگه بخواهیید که این اسکریپت رو به صفحه شون اضافه کنن. این اسکریپت فایل جاوااسکریپت شما رو به صورت دینامیک لود میکنه و دیگه نیازی به آپاچی و پی‌اچ‌پی و بقیه نیست.
<script>
(function() {
var script = document.createElement('script');
var url = "myURL" + "?_" + parseInt(Math.random() * 1000000000);
script.src = url;
script.async = true;
var entry = document.getElementsByTagName('script')[0];
entry.parentNode.insertBefore(script, entry);
})();
</script>
فقط به جای myURL تو کد بالا url خودتون رو بزارید. این کد یه عدد رندم هم به انتهای url شما اضافه میکنه تا از کش شدن اون جلوگیری کنه.

اگه وبلاگهای دیگه دارن از کدهای شما استفاده میکنن و لینک دادن به فایل جاوااسکریپت شما، شما میتونید کدهای بالا رو تو فایل جاوااسکریپتتون بزارید و کدهای جاوااسکریپت خوددتون رو تو یه فایل دیگه قرار بدید. بعد تو url کد بالا به این فایل جدید اشاره کنید.

afshin9032
دوشنبه 24 تیر 1392, 13:11 عصر
روشی که parandweb در بالا پیشنهاد کرد بهتر و حرفه ای تر می باشد .

jalil_gh
دوشنبه 24 تیر 1392, 22:16 عصر
برای جلوگیری از کش شدن فایل های سی اس اس میتوانید از یک Querystring ساده استفاده کنید که به اشتباه به مرورگر اطلاع میدهد که فایل داینامیک است و نباید کش شود.

استفاده از یک Query String ثابت تضمینی برای کش نشدن فایل نیست. برای اینکه فایل کش نشه باید Query String هر بار فرق کنه.
جی کوئری هم وقتی شما در ajax.$ وقتی که مقدار cache رو false قرار میدید (تو متد GET)، یک عدد رندم به انتهای url اضافه میکنه تا از کش شدن فایل جلوگیری کنه.

afshin9032
سه شنبه 25 تیر 1392, 17:25 عصر
استفاده از یک Query String ثابت تضمینی برای کش نشدن فایل نیست. برای اینکه فایل کش نشه باید Query String هر بار فرق کنه.
جی کوئری هم وقتی شما در ajax.$ وقتی که مقدار cache رو false قرار میدید (تو متد GET)، یک عدد رندم به انتهای url اضافه میکنه تا از کش شدن فایل جلوگیری کنه.

وقتی آدرس یکی باشه ، چک میکنه اگه کش باشه از کش استفاده می کنه ، این روش در سایت های بسیاری استفاده شده است .