আপনি নিজের সার্ভারের মাধ্যমে গুগল অ্যানালিটিক্স স্ক্রিপ্টকে প্রক্সি করতে পারেন, এটি স্থানীয়ভাবে সংরক্ষণ করুন এবং প্রতি ঘন্টা এটি ফাইলটি স্বয়ংক্রিয়ভাবে আপডেট করুন এটি গুগল থেকে সর্বদা সর্বশেষতম সংস্করণ।
আমি এখন বেশ কয়েকটি সাইটে এটি করেছি এবং সব ঠিকঠাক চলছে।
নোডজেএস / এমইএন স্ট্যাকের গুগল অ্যানালিটিক্স প্রক্সি রুট
এমইএন স্ট্যাকের সাহায্যে এটি আমার ব্লগে এটি কার্যকর করেছিলাম ।
router.get('/analytics.js', function (req, res, next) {
var fileUrl = 'http://www.google-analytics.com/analytics.js';
var filePath = path.resolve('/content/analytics.js');
// ensure file exists and is less than 1 hour old
fs.stat(filePath, function (err, stats) {
if (err) {
// file doesn't exist so download and create it
updateFileAndReturn();
} else {
// file exists so ensure it's not stale
if (moment().diff(stats.mtime, 'minutes') > 60) {
updateFileAndReturn();
} else {
returnFile();
}
}
});
// update file from remote url then send to client
function updateFileAndReturn() {
request(fileUrl, function (error, response, body) {
fs.writeFileSync(filePath, body);
returnFile();
});
}
// send file to client
function returnFile() {
res.set('Cache-Control', 'public, max-age=' + oneWeekSeconds);
res.sendFile(filePath);
}
});
গুগল অ্যানালিটিক্স প্রক্সি অ্যাকশন পদ্ধতি ASP.NET এমভিসি তে
এএসপি.এনইটি এমভিসি দিয়ে নির্মিত অন্যান্য সাইটে আমি এটি এভাবে প্রয়োগ করেছি।
public class ProxyController : BaseController
{
[Compress]
public ActionResult GoogleAnalytics()
{
var fileUrl = "https://ssl.google-analytics.com/ga.js";
var filePath = Server.MapPath("~/scripts/analytics.js");
// ensure file exists
if (!System.IO.File.Exists(filePath))
UpdateFile(fileUrl, filePath);
// ensure file is less than 1 hour old
var lastModified = System.IO.File.GetLastWriteTime(filePath);
if((DateTime.Now - lastModified).TotalMinutes > 60)
UpdateFile(fileUrl, filePath);
// enable caching for 1 week for page speed score
Response.AddHeader("Cache-Control", "max-age=604800");
return JavaScript(System.IO.File.ReadAllText(filePath));
}
private void UpdateFile(string fileUrl, string filePath)
{
using (var response = WebRequest.Create(fileUrl).GetResponse())
using (var dataStream = response.GetResponseStream())
using (var reader = new StreamReader(dataStream))
{
var body = reader.ReadToEnd();
System.IO.File.WriteAllText(filePath, body);
}
}
}
এটি জিভিপ সংক্ষেপণের জন্য এমভিসি প্রক্সি কন্ট্রোলার দ্বারা ব্যবহৃত কমপ্রেসঅ্যাট্রিবিউট ute
public class CompressAttribute : ActionFilterAttribute
{
public override void OnActionExecuting(ActionExecutingContext filterContext)
{
var encodingsAccepted = filterContext.HttpContext.Request.Headers["Accept-Encoding"];
if (string.IsNullOrEmpty(encodingsAccepted)) return;
encodingsAccepted = encodingsAccepted.ToLowerInvariant();
var response = filterContext.HttpContext.Response;
if (encodingsAccepted.Contains("gzip"))
{
response.AppendHeader("Content-encoding", "gzip");
response.Filter = new GZipStream(response.Filter, CompressionMode.Compress);
}
else if (encodingsAccepted.Contains("deflate"))
{
response.AppendHeader("Content-encoding", "deflate");
response.Filter = new DeflateStream(response.Filter, CompressionMode.Compress);
}
}
}
আপডেট হওয়া গুগল অ্যানালিটিক্স স্ক্রিপ্ট
ক্লায়েন্টের পাশে আমি বর্তমান তারিখের সাথে বিশ্লেষণী পথটি ঘন্টা পর্যন্ত আপড করে রাখি যাতে ব্রাউজারটি এক ঘন্টার বেশি পুরানো কোনও ক্যাশেড সংস্করণ ব্যবহার করে না।
<!-- analytics -->
<script>
(function (i, s, o, g, r, a, m) {
i['GoogleAnalyticsObject'] = r; i[r] = i[r] || function () {
(i[r].q = i[r].q || []).push(arguments)
}, i[r].l = 1 * new Date(); a = s.createElement(o),
m = s.getElementsByTagName(o)[0]; a.async = 1; a.src = g; m.parentNode.insertBefore(a, m)
})(window, document, 'script', '/analytics.js?d=' + new Date().toISOString().slice(0, 13), 'ga');
</script>